sql如何在子查询里引用父语句的属性,比如说现在想更新一张表,但是要根据这张表的主键查询另外一种表

2024-11-25 02:19:41
推荐回答(3个)
回答1:

update t1 set t1.name=(select name from t2 where id=t1.id)这样写没错 但有一个前提 ,那就是t1表中的id和name是一对一的关系,否则就会报错。

回答2:

mysql:
update t1 set t1.name=(select name from t2 where t2.id=t1.id limit 0,1)

ms sql server:
update t1 set t1.name=(select top 1 name from t2 where t2.id=t1.id)

oracle:
update t1 set t1.name=(select name from t2 where t2.id=t1.id and rownum<=1)

回答3:

你这个语句可以,不过要保证t2.name的值查询出来是唯一的,不然会报错