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

发布于 2024-10-18 03:51:54 字数 451 浏览 2 评论 0原文

我有一个这样的查询:

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 DB中的某个位置返回2个以上的值。有没有一种简单的方法可以找出失败的地方?或者是否有另一种方法可以使用另一个表中的值更新一个表中的列?

提前致谢

I have a query like this:

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 

The subquery SELECT t2.id FROM table1 t1 JOIN table2 t2 ... returns 2+ values at some place in my SQL Server 20008 DB. Is there an easy way to figure out where it fails? Or is there another way to update a column in one table with values from another?

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幸福还没到 2024-10-25 03:51:54

假设 ts.id 是唯一的,您可以找出它返回多于 1 行的位置,使用 SELECT(如果 t1.fk_table3_id 则从查询中省略 table3 确实是一个外键约束):

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

Assuming ts.id is unique, you can find out where its returning more then 1 row, use a SELECT (omit the table3 from the query if t1.fk_table3_id really is a foreign key constraint):

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文