这可能与sql一起使用吗?

时间:2010-04-14 14:22:50

标签: sql mysql insert

是否可以做这样的事情:

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 个答案:

答案 0 :(得分:18)

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

其中value1是'other table'中的值,value2是你在select语句中包含的常量。

答案 1 :(得分:5)

试试这个:

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

答案 2 :(得分:2)

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

特别参考示例。

我建议您首先阅读SELECTUPDATEDELETEINSERT SQL命令的完整语法。然后展开到subqueriesDDL

慢慢来,找出例子。

答案 3 :(得分:0)

你肯定可以。它应该与下面的例子类似;

INSERT INTO Store_Information (store_name, Sales, Date)
(SELECT store_name, Sales, Date FROM Sales_Information WHERE Year(Date) = 2010)

答案 4 :(得分:0)

当您在insert语句中指定关键字“Values”时,您尝试仅插入一个值。目前的方法是将“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)