如何从b WHERE c =(有多个结果的查询)中执行SELECT SUM(a)

时间:2018-12-10 12:40:03

标签: mysql sql

例如,如何正确编写此代码:

SUM(qty) FROM paid WHERE idDoc=(SELECT id FROM doc WHERE this=that)

当我确定第二个查询(SELECT doc from SELECT WHERE this = that)产生的结果多于一个结果时。

我可以使用“顶层”的任何高级语言来遍历它(我现在正在Delphi和PHP中使用它),但是我想知道是否可以通过单个MySQL查询(而不是过程)来完成,只是一个查询)。

不幸的是,我不知道如何更好地解释它,因此我无法找到关于它的正确答案。

暂时,我将只在第一个查询周围使用嵌套循环,但是在MySQL内部进行此操作肯定会更快,更容易阅读。

谢谢

3 个答案:

答案 0 :(得分:2)

如果我理解正确,请使用IN代替=

SELECT SUM(qty) FROM paid WHERE idDoc IN (SELECT id FROM doc WHERE this=that)

答案 1 :(得分:1)

要检查条件数组的值,必须使用IN子句,例如:

SELECT SUM(qty)
FROM paid
WHERE idDoc IN (SELECT id FROM doc WHERE this=that)

答案 2 :(得分:1)

听起来您可以为此使用INNER JOIN:

SELECT SUM(qty) 
FROM paid 
INNER JOIN doc ON paid.idDoc = doc.id
WHERE this = that