Действительно ли это возможно с sql?

Это возможный сделать что-то вроде этого:

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);
5
задан Gabriel Solomon 14 April 2010 в 14:58
поделиться

5 ответов

Да

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

Где value1 - значение из "другой таблицы", а value2 - константа, которую вы включили в оператор select.

18
ответ дан 18 December 2019 в 06:22
поделиться

Попробуйте следующее:

INSERT INTO table(col1, col2) 
SELECT table2.value1, value2 FROM table2 WHERE table2.id = 3;
5
ответ дан 18 December 2019 в 06:22
поделиться

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

INSERT INTO Store_Information (store_name, Sales, Date)
(SELECT store_name, Sales, Date FROM Sales_Information WHERE Year(Date) = 2010)
0
ответ дан 18 December 2019 в 06:22
поделиться

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

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

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

Идите медленно и разбирайте примеры.

2
ответ дан 18 December 2019 в 06:22
поделиться

при указании ключевого слова «Значения» в операторе вставки вы пытаетесь вставить только значение. текущий способ сделать это - присвоить значение "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)
0
ответ дан 18 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: