Jam*_*s B 7 mysql sql select sql-order-by greatest-n-per-group
我有这张桌子
CREATE TABLE `codes` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`language_id` int(11) unsigned NOT NULL,
`title` varchar(60) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`time_posted` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)
language_id指的是记录所使用的语言.我想要做的是检索每个language_id中最近五个(ORDER BY time_posted DESC LIMIT 5)记录的列表.我可以在PHP中使用许多不同的SQL查询在循环中执行此操作,但我觉得有一种更简单的方法.
我必须得到一本关于SQL的书,哈哈.
谢谢.
Bil*_*win 10
以下是我在MySQL中解决这种"每组顶级N"类型查询的方法:
SELECT c1.*
FROM codes c1
LEFT OUTER JOIN codes c2
ON (c1.language_id = c2.language_id AND c1.time_posted < c2.time_posted)
GROUP BY c1.id
HAVING COUNT(*) < 5;
Run Code Online (Sandbox Code Playgroud)
另请参阅" 如何在mysql查询中从每个组中选择多个项目? "
| 归档时间: |
|
| 查看次数: |
4441 次 |
| 最近记录: |