查询并新增
查询结果添加到另一张表中
INSERT INTO B (B1,B2,B3) SELECT A1,A2,A3 FROM A
查询并更新
Oracle和SQLServer 写法
UPDATE A SET A3 = (SELECT A3 FROM A WHERE A3 = 90 )
MySql 写法
UPDATE A SET A3 = (SELECT B.A3 FROM ( SELECT * FROM A ) AS B WHERE B.A3 = 90 )
mysql在from子句中遇到子查询时,先执行子查询并将结果放到一个临时表中,我们通常称它为“派生表”;临时表是没有索引、无法加锁的。
update时,会锁表,此时不能再select。所以会报错,
此时如果将结果集放入临时表,临时表不会上锁,所以,可以正常查询并更新。