选择两列值不相等的位置

时间:2014-10-03 00:27:12

标签: mysql

我希望选择两列中的值不相等的行。

我有以下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值不同。

1 个答案:

答案 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