mysql - 删除mysql表中的重复对

标签 mysql

+------+---------+---------+
| id   | user_id | job_id  |
+------+---------+---------+
|   92 |      58 |       4 |
|  896 |      58 |       4 |
|  988 |      58 |      22 |
|  991 |      58 |      22 |
|  894 |      58 |      38 |
|  548 |      58 |      38 |

我想删除 user_id 与 job_id 重复的条目。换句话说,应该只有一个不同的 job_id 与 user_id 关联。在此示例中,应该只有 4、22、38(而不是重复的条目)。哪个 id 受到影响并不重要,只要一个 job_id 与 user_id 匹配即可。

最佳答案

你可以使用:

DELETE t1 FROM tab t1, tab t2
WHERE  t1.id < t2.id
  AND t1.user_id = t2.user_id
  AND t1.job_id = t2.job_id;

SqlFiddleDemo

输出:

╔══════╦══════════╦════════╗
║ id   ║ user_id  ║ job_id ║
╠══════╬══════════╬════════╣
║ 896  ║      58  ║      4 ║
║ 991  ║      58  ║     22 ║
║ 894  ║      58  ║     38 ║
╚══════╩══════════╩════════╝

并考虑在 user_idjob_id 列上添加 UNIQUE INDEX 以避免将来出现此问题。

关于mysql - 删除mysql表中的重复对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36584086/

相关文章:

c# - 如何在 .NET 中将列表作为参数传递

php - Mysql Query在PhpMyadmin中有效,但在php中连接时无效

C# 将 mySQL 结果添加到组合框

MySQL DUPLICATE KEY UPDATE + SUM 函数

mysql - MySQL 服务器 8.0.15 中的 "Writing configuration file failed"

php - mysql查询时区转换

mysql - 在sql上写查询

php - Magento Javascript 自定义 block

mysql - 使用 libmysqlclient C API 设置 collat​​ion_connection

php - 通过mysql中的php从android存储以base64编码的图像