表字段:user_id,keyword,query_date
现在想实现查询某个user_id按时间排序的前五个keyword。由于keyword是可以重复的,我的SQL如下:
SELECT DISTINCT
t.keyword,
t.query_date
FROM t_query_keyword t
WHERE t.user_id = '748761E1-260F-4E61-9D0D-BE6D122560E2'
ORDER BY t.query_date DESC
LIMIT 5;
结果没有实现keyword的去重
请问这个sql该怎么写?
DISTINCT 针对的是select 后面的所有字段, 如果你想keyword不重复,但对query_date不care, 你可以只取keyword, 如果你想取keywork和相应的最大日期的query_date,可以用group by... having ....
如:
返回的结果是:
keyword=sql, query_date=2018-01-03有两条,但因为DISTINCT, 只返回其中一条。
或者用如下的sql, 可以保证keyword不重复。
返回的结果是