【发布时间】:2017-06-01 22:34:11
【问题描述】:
帮助,请让 sql 选择到数据库。有这样的数据。
我的桌子是:
id news_id season seria date_update
---|------|---------|-----|--------------------
1 | 4 | 1 | 7 | 2017-04-14 16:38:10
2 | 4 | 1 | 7 | 2017-04-14 17:38:10
5 | 4 | 1 | 7 | 2017-04-14 16:38:10
3 | 4 | 1 | 7 | 2017-04-14 16:38:10
4 | 4 | 1 | 7 | 2017-04-14 16:38:10
6 | 4 | 1 | 7 | 2017-04-14 16:38:10
7 | 4 | 1 | 7 | 2017-04-14 16:38:10
8 | 1 | 1 | 25 | 2017-04-23 18:42:00
需要将所有单元格按最大季节、序列和日期分组,并按 date_update DESC 排序。
结果我需要下一行
id news_id season seria date_update
---|------|---------|-----|--------------------
8 | 1 | 1 | 25 | 2017-04-23 18:42:00
2 | 4 | 1 | 7 | 2017-04-14 17:38:10
因为这一行在每个 news_id 中具有最高的季节和 seria 和 date_update。即我需要选择具有最高季节和序列的数据以及按 news_id 分组的 date_update 并按 date_update DESC 排序
我试过了,但数据并不总是正确的,并且由于某种原因它并不总是涵盖所有符合条件的单元格。
SELECT serial.*
FROM serial as serial
INNER JOIN (SELECT id, MAX(season) AS maxseason, MAX(seria) AS maxseria FROM serial GROUP BY news_id) as one_serial
ON serial.id = one_serial.id
WHERE serial.season = one_serial.maxseason AND serial.seria = one_serial.maxseria
ORDER BY serial.date_update
请帮忙。谢谢。
【问题讨论】:
-
假设你有两条记录作为 news_id。一个有第 1 季和第 2 季。另一个有第 2 季和第 1 季。所以最大季为 2,最大季为 2。但没有第 2 季和第 2 季的记录。所以你不想显示任何结果行对于这个 news_id?
-
哦,我明白了这个问题,谢谢。让你帮忙写sql请求?也许你知道比我想象的更好的选择
标签: mysql max sql-order-by where