gpt4 book ai didi

MySql 在一条语句中查找3个表中是否存在记录

转载 作者:行者123 更新时间:2023-11-29 12:02:13 26 4
gpt4 key购买 nike

我要删除供应商,但在此之前我想确保其他表中没有依赖数据(例如订单等)。由于我到处都有适当的外键约束,最简单的方法可能是在供应商表上执行删除语句并在处理程序中捕获错误,然后告诉用户不可能删除。

但是,出于兴趣,我想知道是否可以检查一条语句中是否存在从属记录,该语句会提供一个数字作为结果。到目前为止我想出了

    Const chkSQL As String = _
"SELECT COUNT(*) FROM bestellungen WHERE LiefID= @LiefID UNION " & _
"SELECT COUNT(*) FROM lieferungen WHERE LiefID= @LiefID UNION " & _
"SELECT COUNT(*) FROM lieferantenartikel WHERE LiefID= @LiefID"

但这将提供 3 行以及各自的计数。如果我使用 ExecuteScalar (我希望得到 3 个值的总和),我似乎只能得到最后一个表的结果。我已经尝试过 SUM 但不知怎的我无法得到正确的语法。

有什么想法吗?

最佳答案

如果您想要连续 3 个表的总和;

select sum(cnt) as total_cnt
from (
SELECT COUNT(*) as cnt FROM bestellungen WHERE LiefID= @LiefID UNION all
SELECT COUNT(*) as cnt FROM lieferungen WHERE LiefID= @LiefID UNION all
SELECT COUNT(*) as cnt FROM lieferantenartikel WHERE LiefID= @LiefID
) x

这里使用union all,因为union将从结果中排除类似的cnt,这不是首选。

关于MySql 在一条语句中查找3个表中是否存在记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32180009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com