mysql - 选择两个列值不相等的地方

标签 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 值不同。

最佳答案

这是在 HAVING 子句中完成的。 WHEREGROUP BY 之前过滤,HAVINGGROUP 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/

相关文章:

mysql - 为什么这个子查询不能返回多行?

mysql - SQL在指定记录后给出X记录

php - 如何从mysql读取和写入数据到JSON,然后用于谷歌表格图表

php - SQL 表不以 .sql 的形式保存在 mysql 文件夹中,而是以 .ibd 的形式保存

php - 搜索结果错误

mysql - 如何将数据从 MySQL 导入到 PostgreSQL

php - PHP 登录时向用户发送电子邮件通知

mysql - SQL fiddle : How do I insert into a single table from multiple tables

mysql - 我们可以在不登录的情况下在远程机器上执行sql查询吗

带有子查询的 MySQL 更新