[英]SQL COUNT from one table where condition from another table is true
好的,假设我有两个表“ TableA”和“ TableB”。 在表AI中,列“ C”,在表BI中,列“ D”和“ E”。
TableA包含很多行,这些行可以在C列中包含相同的值。TableB包含很多行,但是D列必须是唯一的(这是自动递增的编号)。 TableB的E列在不同的行中也可以包含相同的值。 同样,C列和D列将包含相同的数字。
示例表
TableA
ID C
----------
1 1
2 1
3 2
TableB
D E
----------
1 1
2 0
3 0
现在,我要做的是计算出C列中TableA中的所有行,我已经弄清楚该怎么做。 但是,我还希望它仅给我C的计数,其中D中的等效值也具有E“ 1”。
因此,我已经尝试过了,但是失败了,我无法想到自己在做什么或如何解决。 搜寻COUNT只让我得到处理一张桌子的结果。
在我的示例中,我希望它返回到COUNT C,其中ID匹配在TableB列D中,其中E = 1(因此,其中TableB列D = 1),并将其作为计数返回,所以我希望它返回给我(或达到此目的的内容):
c COUNT(*)下降1 2
SELECT TableA.C, COUNT(*) FROM TableA, TableB WHERE TableB.E = 1 GROUP BY TableA.C ORDER BY COUNT(*) DESC
如果那有意义的话...
您不将列中的两个表连接在一起
SELECT a.C, COUNT(*) FROM TableA a JOIN TableB b ON (C = D)
WHERE E GROUP BY a.C
ORDER BY COUNT(*) DESC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.