我想编写一个INSERT指令,该指令使用具有WHERE子句的子查询从不同的表中获取其值中的一个值,该WHERE子句可比较两个表。通过查看代码可能会更容易理解。比较子查询中两个表的值
INSERT INTO table1 (f1,f2,f3)
VALUES ("foo","bar",(SELECT e3 FROM table2 WHERE table2.e2 = table1.f2));
我已经尝试过几种组合,但目前为止没有任何效果。这可以做到吗?怎么样?
我想编写一个INSERT指令,该指令使用具有WHERE子句的子查询从不同的表中获取其值中的一个值,该WHERE子句可比较两个表。通过查看代码可能会更容易理解。比较子查询中两个表的值
INSERT INTO table1 (f1,f2,f3)
VALUES ("foo","bar",(SELECT e3 FROM table2 WHERE table2.e2 = table1.f2));
我已经尝试过几种组合,但目前为止没有任何效果。这可以做到吗?怎么样?
也许你想要更新?
update table1 t1 join
table2 t2
on t1.f2 = f2.e2
set f2 = 'foo',
f3 = 'bar';
这就是我最终做的。谢谢! – mustieles
WHERE
子句有点奇怪,因为table1.f2
的值在表中尚不存在,它正要插入(或者我误解了查询演示的内容)。也许你想这个代替:
INSERT INTO table1 (f1,f2,f3)
SELECT "foo","bar", e2
FROM table2
WHERE table2.e2 = "bar";
上面的示例演示了如何从SELECT
语句来完成SQL INSERT
。
你不能这样做!想想看,这没有意义。 –
您的问题不清楚,这就是为什么样本数据和期望的结果在问题中几乎总是有用的原因。 –