我创建此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
但是现在我想删除重复的行(column laptop_id列),并为该行保留每个mobile_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;
答案 0 :(得分:1)
可以在现有结果表上运行的另一种解决方案可能是:
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
答案 1 :(得分:0)
您可以使用聚合函数max()并按
分组No such file or directory: '/work/data/get_info name=Mike
如果使用select *,还将返回所有记录,以获取可能产生意外结果的信息..因此,您应仅选择需要应用聚合函数以减少结果的列