mysql - 使用 Group By 从 Mysql 表中删除重复记录

标签 mysql

我下面有一个表结构和数据。 enter image description here

我需要从表列表中删除重复的记录。我的困惑是,当我触发查询时

SELECT * FROM `table` GROUP BY CONCAT(`name`,department)

然后给我正确的列表(12 条记录)。

enter image description here

当我使用子查询时相同的查询:

SELECT * 
FROM `table` WHERE id IN (SELECT id FROM `table` GROUP BY CONCAT(`name`,department))  

它返回所有错误的记录。

Table Structure

所以,我的问题是为什么子查询中的 group by 不起作用。

最佳答案

实际上,正如 Tim 在他的回答中提到的那样,通过 group by 子句获取第一条唯一记录并不是 sql 的标准功能,但 mysql 在 mysql5.6.16 版本之前允许它,但从 5.6.21 开始它已被更改。

只需在你的 sql fiddle 中更改 mysql 版本,然后检查你会得到你想要的。

关于mysql - 使用 Group By 从 Mysql 表中删除重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32175332/

相关文章:

php - LIMIT 和 OFFSET - 如果偏移量大于行数或查询返回的记录少于 5,则从头开始

php - 使用 PHP 将 unix 时间戳插入 mySQL 整数字段 (INT) 的最佳方法?

mysql - 获取第一个字符不是字母数字的行

php - 使用哈希值更新数据库中的所有行

python - Pyramid +MySQL

c# - 如何在 C# 中的查询中设置字符串中的值?

Mysql 选择某事作为另一事

mysql - 将元数据记录为实体表的一部分还是单独的?

python - Django TruncDate 给出空值

javascript - 嵌套在 AJAX 输出中的 jQuery AJAX 函数 (innerHTML)