Это возможный сделать что-то вроде этого:
INSERT INTO table(col1, col2) VALUES(something_from_another_table, value);
С something_from_another_table
будучи командой SQL? Как, там что-то, что я могу сделать, это - equivelant к:
INSERT INTO table(col1, col2) VALUES((SELECT value FROM table2 WHERE id = 3), value);
Да
INSERT INTO table(col1, col2)
SELECT value1, 'value2' FROM table2 WHERE id = 3
Где value1 - значение из "другой таблицы", а value2 - константа, которую вы включили в оператор select.
Попробуйте следующее:
INSERT INTO table(col1, col2)
SELECT table2.value1, value2 FROM table2 WHERE table2.id = 3;
Вы определенно можете. Он должен работать аналогично приведенному ниже примеру:
INSERT INTO Store_Information (store_name, Sales, Date)
(SELECT store_name, Sales, Date FROM Sales_Information WHERE Year(Date) = 2010)
http://dev.mysql.com/doc/refman/5.1/en/insert-select.html
посмотрите, особенно в примерах.
Я бы рекомендовал для начала прочитать полный синтаксис SQL-команд SELECT, UPDATE, DELETE и INSERT. Затем переходите к подзапросам и DDL.
Идите медленно и разбирайте примеры.
при указании ключевого слова «Значения» в операторе вставки вы пытаетесь вставить только значение. текущий способ сделать это - присвоить значение "something_from_another_table" переменной, а затем сделать вашу вставку
DECLARE @ANYVALUE AS VARCHAR(40)
SELECT @ANYVALUE = ANYFIELD FROM table2 WHERE id = 3
INSERT INTO table1 (FIELD1, FIELD2) VALUES(@ANYVALUE, VALUE2)
Таким образом всегда будет вставляться одна запись. другой правильный способ вставит n запись, поскольку оператор where может фильтровать.
INSERT INTO Store_Information (store_name, Sales, Date)
(SELECT store_name, Sales, Date FROM Sales_Information WHERE Year(Date) = 2010)