是否可以做这样的事情:
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);
答案 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
特别参考示例。
我建议您首先阅读SELECT,UPDATE,DELETE和INSERT SQL命令的完整语法。然后展开到subqueries和DDL。
慢慢来,找出例子。
答案 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)