[英]my sql query to fetch distinct records in descending order of primary key value
我正在执行以下查询
SELECT SQL_CALC_FOUND_ROWS movie_id,video_id,created_date
FROM video_logs
WHERE user_id = 2693 AND
studio_id=223 AND
(DATE_FORMAT(created_date,"%Y-%m-%d") BETWEEN "2018-03-16 11:12:12" AND
"2018-04-11 20:21:44")
order by id desc;
+----------+----------+---------------------+
| movie_id | video_id | created_date |
+----------+----------+---------------------+
| 3751 | 6711 | 2018-04-11 02:19:18 |
| 544 | 2347 | 2018-04-11 14:16:57 |
| 564 | 2367 | 2018-04-11 14:16:08 |
| 1083 | 2998 | 2018-04-11 02:15:21 |
| 544 | 2347 | 2018-04-11 14:14:55 |
| 536 | 2339 | 2018-04-11 14:14:09 |
| 3014 | 5857 | 2018-04-11 01:58:03 |
| 3011 | 5855 | 2018-04-11 13:55:37 |
| 3011 | 5855 | 2018-04-11 13:39:59 |
| 3751 | 6711 | 2018-04-11 01:39:08 |
| 3014 | 5857 | 2018-04-11 01:38:37 |
| 3007 | 5852 | 2018-04-11 13:37:49 |
+----------+----------+---------------------+
我希望在不影响movie_id列顺序的情况下,将上述结果与众不同。
像我的输出应该有movie_id列如下
3751 544 564 1083 536 3014 3011 3007
在此先感谢您的帮助。
您需要按电影ID分组。 另外,您可以在创建日期使用MIN()或MAX()来选择当movie_id有多行时显示的内容。
SELECT SQL_CALC_FOUND_ROWS movie_id,video_id,min(created_date) as created_date
FROM video_logs
WHERE user_id = 2693 AND
studio_id=223 AND
DATE_FORMAT(created_date,"%Y-%m-%d") BETWEEN "2018-03-16 11:12:12" AND "2018-04-11 20:21:44"
group by movie_id
order by id desc;
通过对列进行分组,然后使用MAX函数获取最新(最高)的日期时间值。
SELECT SQL_CALC_FOUND_ROWS movie_id,video_id,MAX(created_date) as created_date
FROM video_logs
WHERE user_id = 2693 AND
studio_id=223 AND
(DATE_FORMAT(created_date,"%Y-%m-%d") BETWEEN "2018-03-16 11:12:12" AND
"2018-04-11 20:21:44")
GROUP BY SQL_CALC_FOUND_ROWS, video_id
order by id desc;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.