SELECT 使用 INNER JOIN 计算增量和过滤结果
SELECT with INNER JOIN to count delta and filter results
我正在尝试 select 来自 table B 的所有行具有相同的 id
并计算来自 table [=14] 的 count
值的增量=] 和行数 select 像这样从 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
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;
尝试使用这个查询
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 来自 table B 的所有行具有相同的 id
并计算来自 table [=14] 的 count
值的增量=] 和行数 select 像这样从 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
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;
尝试使用这个查询
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