Это возможно с sql? - PullRequest
       18

Это возможно с sql?

5 голосов
/ 14 апреля 2010

Можно ли сделать что-то вроде этого:

INSERT INTO table(col1, col2) VALUES(something_from_another_table, value);

Если something_from_another_table является командой SQL? Мол, есть что-то, что я могу сделать, что равнозначно:

INSERT INTO table(col1, col2) VALUES((SELECT value FROM table2 WHERE id = 3), value);

Ответы [ 5 ]

18 голосов
/ 14 апреля 2010

Да

INSERT INTO table(col1, col2) 
SELECT value1, 'value2' FROM table2 WHERE id = 3

Где значение1 - это значение из «другой таблицы», а значение2 - это константа, включенная в этот оператор выбора.

5 голосов
/ 14 апреля 2010

Попробуйте это:

INSERT INTO table(col1, col2) 
SELECT table2.value1, value2 FROM table2 WHERE table2.id = 3;
2 голосов
/ 14 апреля 2010

http://dev.mysql.com/doc/refman/5.1/en/insert-select.html

особенно обратите внимание на примеры.

Я бы рекомендовал читать полный синтаксис команд SELECT , UPDATE , DELETE и INSERT SQL. Затем разверните до подзапросов и DDL .

Идите медленно и разберитесь с примерами.

0 голосов
/ 14 апреля 2010

при указании ключевого слова «Значения» в операторе вставки, который вы пытаетесь вставить только значение. текущий способ сделать это - присвоить значение переменной «оверчить что-то другое »в переменную, а затем сделать вставку

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)
0 голосов
/ 14 апреля 2010

Вы определенно можете. Он должен работать аналогично примеру ниже;

INSERT INTO Store_Information (store_name, Sales, Date)
(SELECT store_name, Sales, Date FROM Sales_Information WHERE Year(Date) = 2010)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...