[英]SELECT with INNER JOIN to count delta and filter results
我正在尝试 select 表 B 中具有相同id
的所有行,并计算表A
中的count
数值的增量和从 B 中选择的行数,如下所示:
SELECT A.id,
A.count,
count(*) AS counter,
CAST(count(*) AS SIGNED) - CAST(A.count AS SIGNED) AS delta
FROM table_A AS A
INNER JOIN table_B AS B ON B.id = A.id
GROUP BY A.id
现在我计算了delta
,但无法过滤delta > 0
的结果我试图在这里和那里放置HAVING delta > 0
和WHERE delta > 0
,但没有运气。 看起来我在我的查询中遗漏了一些带有范围的东西。
尝试使用此查询
SELECT * FROM (SELECT A.id,
A.count,
count(1) AS counter,
CAST(count(1) AS SIGNED) - CAST(A.count AS SIGNED) AS delta
FROM table_A AS A
INNER JOIN table_B AS B ON B.id = A.id
GROUP BY A.id) as t where delta > 0
这是你想要的吗?
SELECT
a.id,
a.count,
COUNT(*) AS counter
FROM cdb_A a
INNER JOIN db_B AS B
ON b.id = a.id
GROUP BY
a.id
HAVING
COUNT(*) > a.count;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.