Нельзя вставить в таблицу messages
без вставки значения для столбца messageid, даже если вы заменяете двойные кавычки одинарными кавычками, потому что " Поле 'messageid' не имеет значения по умолчанию ". Вам нужно сделать это следующим образом:
INSERT INTO messages (messageid
, message
, sender
, recipient)
VALUES (1
, 'Message.'
, 'System'
, (SELECT employeename
FROM employees
WHERE area = 'Maintenance'))
Вот небольшая демонстрация
Другой вариант - создать такие сообщения в виде таблицы:
CREATE TABLE messages (messageid INTEGER PRIMARY KEY AUTO_INCREMENT
, message VARCHAR(150)
, sender VARCHAR(40)
, recipient VARCHAR(40))
Тогда ваш код будет работать:
INSERT INTO messages (message
, sender
, recipient)
VALUES ("Message."
, "System"
, (SELECT employeename
FROM employees
WHERE area = "Maintenance"))
Вот демо , показывающее вам этот пример
Но ваша ошибка Подзапрос возвращает более 1 строка вызвана тем, что в вашей таблице есть две строки employees
со значением "Maintenance" в столбце area
, как вы можете видеть в этой небольшой демонстрационной версии: нажмите здесь, чтобы увидеть причину вашей ошибки
Теперь вам нужно решить, что вы будете делать в этой ситуации. Вы хотите вставить максимальное или минимальное значение из таблицы employees
следующим образом:
INSERT INTO messages (message
, sender
, recipient)
VALUES ("Message."
, "System"
, (SELECT max(employeename)
FROM employees
WHERE area = "Maintenance"))
Или, может быть, вы хотите добавить еще один критерий в оператор выбора, например:
INSERT INTO messages (message
, sender
, recipient)
VALUES ("Message."
, "System"
, (SELECT employeename
FROM employees
WHERE area = "Maintenance"
and employeeid = 1))
Оба этих примера работают, отметьте здесь , но вам решать, что вы хотите вставить.