我希望选择两列中的值不相等的行。
我有以下MySQL查询:
SELECT t1.id, t1.numvotes, COUNT(DISTINCT t2.id) AS numvotes
FROM t1
LEFT JOIN t2 ON
(t1.id = t2.id)
GROUP BY t1.id
来自t1
的数据是:
id | numvotes
-------------------
1 | 4
2 | 6
3 | 1
4 | 3
5 | 2
来自t2
的数据是:
id
-----
1
1
1
1
2
2
2
3
4
4
4
5
上述查询的结果将是:
id | numvotes | numvotes
-------------------------------
1 | 4 | 4
2 | 6 | 3
3 | 1 | 1
4 | 3 | 3
5 | 2 | 1
现在,我想将MySQL查询修改为仅SELECT,其中t1
的numvotes与t2
的计算COUNT DISTINCT值不同。
答案 0 :(得分:3)
这是在HAVING
子句中完成的。 WHERE
之后的GROUP BY
过滤,HAVING
之后的GROUP BY
过滤。
SELECT t1.id, t1.numvotes, COUNT(DISTINCT t2.id) AS numvotes
FROM t1
LEFT JOIN t2 ON t1.id = t2.id
GROUP BY t1.id
HAVING COUNT(DISTINCT t2.id) <> t1.numvotes