Mysql 选择 N 个重复项,省略 1 个重复项

标签 mysql

考虑这个表:

+-----+--------+
| id  | value  |
+-----+--------+
|  1  |   22   |
+-----+--------+
|  2  |   12   |
+-----+--------+
|  3  |   22   |
+-----+--------+
|  4  |   22   |
+-----+ -------+

我可以选择所有重复的列value,如下所示:

select value from table having count(value) > 1 ; 

这将输出 Id 1,3 和 4。

我试图做的是选择重复项,但保留 1(一)个重复项未选择,因此上面的代码将仅输出 Ids 3 和 4(或 1 和 3 等)。 ..重复的省略并不重要,重要的是它是。

我怎样才能实现这个目标?

这个问题不是重复的

Using LIMIT within GROUP BY to get N results per group?

最佳答案

您可以使用聚合函数来过滤 id 的值并选择所有其他值

  select * from table 
  where (value, id) not in (
      select value, max(id) 
      from table 
      group by value 
      having count(value) > 1 
  )
  ; 

关于Mysql 选择 N 个重复项,省略 1 个重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44373672/

相关文章:

db2 - 如何获取转储db2数据库?

php - 是否可以将完整记录(整行)连接到 MySQL 中的一列中?如何?

php - 注册表: No error showing but No data on mysql DATABASE

python - anaconda python mysql 混淆

php - Float 和 varchar 中的 Laravel 4 和 MYSQL 列

mysql - 如何从odbc导出数据?

mysql - 如何在从 tMySqlOutput 捕获被拒绝的行时加快数据传输?

mysql 动态 ORDER BY 子句

mySQL UNION 将列添加到生成的查询结果中

php - 当新人在表单上注册时创建文件夹