+------+---------+---------+
| 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;
输出:
╔══════╦══════════╦════════╗
║ id ║ user_id ║ job_id ║
╠══════╬══════════╬════════╣
║ 896 ║ 58 ║ 4 ║
║ 991 ║ 58 ║ 22 ║
║ 894 ║ 58 ║ 38 ║
╚══════╩══════════╩════════╝
并考虑在 user_id
和 job_id
列上添加 UNIQUE INDEX
以避免将来出现此问题。
关于mysql - 删除mysql表中的重复对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36584086/