我有这样的查询:
UPDATE t3
SET somevalue = (SELECT t2.id
FROM table1 t1
JOIN table2 t2
ON t1.fk_table2_id = t2.id
WHERE t3.id = t1.fk_table3_id)
FROM table3 t3
子查询 SELECT t2.id FROM table1 t1 JOIN table2 t2 ... 在我的SQL Server 20008数据库中的某个位置返回2+值。有没有一种简单的方法可以找出它失败的地方?或者是否有另一种方法来更新一个表中的列与另一个表中的值?
提前致谢
答案 0 :(得分:1)
假设ts.id
是唯一的,你可以找到它返回多于1行的位置,使用SELECT(如果table3
确实是外键约束,则忽略查询中的t1.fk_table3_id
):
SELECT t3.id, COUNT(*)
FROM table1 t1 JOIN table2 t2 ON t1.fk_table2_id = t2.id
JOIN table3 t3 ON t3.id = t1.fk_table3_id
GROUP BY t3.id
HAVING COUNT(*) > 1