我希望选择两列值不相等的行。
我有以下 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 值不同。
最佳答案
这是在 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
关于mysql - 选择两个列值不相等的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26171630/