我创建这个 SQL 查询:
SELECT * FROM favorite_user_cellphone fc
WHERE user_id = 123 AND unfavorited_at is null
ORDER BY favorited_at DESC;
该查询的结果如下:
favorite_id | user_id | cellphone_id | favorited_at | unfavorited_at
7 123 1225 2019-04-13 12:35:02 null
5 123 1225 2019-04-11 12:35:02 null
2 123 1275 2019-04-09 13:00:02 null
1 123 1225 2019-04-09 12:35:02 null
但现在我想删除重复的行(cellphone_id 列)并保留每个 cellphone_id 具有最新日期的行
所以,最终的结果应该是这样的:
favorite_id | user_id | cellphone_id | favorited_at | unfavorited_at
7 123 1225 2019-04-13 12:35:02 null
2 123 1275 2019-04-09 13:00:02 null
我这样做:
SELECT * FROM favorite_user_cellphone fc
WHERE user_id = 123 AND unfavorited_at is null
ORDER BY favorited_at DESC;
最佳答案
您可以在现有结果表上运行的另一个解决方案可能是:
select fuc.*
from favorite_user_cellphone fuc
inner join
(
select cellphone_id,
max(favorite_id) as favorite_id
from favorite_user_cellphone
where user_id = 123
group by cellphone_id
) t on fuc.favorite_id = t.favorite_id
关于mysql - 执行 SQL 查询后如何删除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55654845/