您的位置:首页 > 数据库

SQL 基础语法整理

2016-03-31 09:52 585 查看

update select 之后的数据

update B
set B_account = b.s_amount
from B a,
(
select sum(amount) as s_amount,pay_id from A group by pay_id
) b
where a.pay_id = b.pay_id

select name from (select name,avg(score) as a_score from student where name like '张%' group by name) a where a.a_score > 75


可以看出Mysql、Sybase、SQL SERVER的解决办法是使用UPDATE…SET…FROM…WHERE…的语法,实际上就是从源表获取更新数据。

注意:from后面是两个表的连接,源表+查询结果表。

oracle、DB2中:

UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID)

UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)


可以看出,后面的查询只是查询的一张表。

注意:mysql 5.7中上面语句不好使,要这样写:

update users a left join employee b on a.users_id = b.id set a.salary = b.salary;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: