有表1和表2,如下
现在需要根据表2的ID在表1中查询ID对应的名字插入表2
怎么去做
UPDATE Cla
SET Cla.SNAME = (
SELECT
Stu.SNAME
FROM
Cla,
Stu
WHERE
Cla.SID = Stu.SID
)
You can't specify target table 'Cla' for update in FROM clause
当我选择中间表在查询就会有Subquery returns more than 1 row
贴sql语句
update c
set c.sname=s.sname
from cla c
left join stu s on c.sid=s.sid
试试这个语句吧
update t set SNAME = (select SNAME from Stu as a where a.SID = t.SID ) from Cla as t
如果子查询有多个记录,就需要加max
还是那句话,我通过将select出的结果再通过中间表select一遍,得到的值是多于一行,但是这一组正是我要的,我要让这个结果对应更新到没一行
子查询里有多个值,你就需要从多个值中选一个,主表一个记录的字段值是不能更新多个值的,在子查询中使用max和min都可以
update t set SNAME = (select max(SNAME) from Stu as a where a.SID = t.SID ) from Cla as t