繁体   English   中英

SELECT 与 INNER JOIN 计算增量和过滤结果

[英]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 > 0WHERE 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM