如何检查子查询输出的详细信息?

时间:2011-02-18 08:09:25

标签: sql sql-server-2008 subquery

我有这样的查询:

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+值。有没有一种简单的方法可以找出它失败的地方?或者是否有另一种方法来更新一个表中的列与另一个表中的值?

提前致谢

1 个答案:

答案 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