mysql - 如何从 MySQL 表中删除重复的记录?

标签 mysql

<分区>

如果你能帮我解决这个sql问题,我将不胜感激。

我有一个包含两列的表格。在此示例中将它们命名为 UserID 和 LocationID。

我想清理这个表,所以我想保留每对唯一的 UserID 和 LocationID 的第一次出现,并删除包含相同对的其他行。换句话说,我想知道每个用户去过的每个位置。如果他一次又一次地访问同一个地方并且被记录下来,我想删除那些记录。例如,这是原始表:

ID UserID  LocationID
1. "user1" "location1"
2. "user1" "location2"
3. "user2" "location3"
4. "user1" "location1"
5. "user2" "location3"
6. "user2" "location3"

我想删除第 4、5 和 6 行。

是否可以用一条mysql命令解决? 谢谢。

最佳答案

使用自连接删除:

DELETE t2.*
FROM tablename AS t1
INNER JOIN tablename AS t2
    ON t1.UserID = t2.UserID
    AND t1.LocationID = t2.LocationID
WHERE t1.ID < t2.ID

tablename 应替换为您的表的名称。

关于mysql - 如何从 MySQL 表中删除重复的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15011062/

相关文章:

MySQL 用变量替换字符串

mysql - 相当于sql server中mysql的查询

java - 级联在 hibernate 模式下无法正常工作

mysql - 在这种情况下,非规范化表是可接受的选择吗?

php - MySQL & PHP - 选择 6 行,每行有不同的 'WHERE' 子句

MySQL 显示分组结果

mysql - sql多对多关系只有2个表

PHP Date to String 比较日期

mysql - MariaDB 表卡住了

mysql - csv更新数据库表