回答

收藏

SQL查询,选择每组5个最新的

技术问答 技术问答 200 人阅读 | 0 人回复 | 2023-09-14

我有这张表7 P$ G, j- c  ?( p
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=utf8language_id指用于记录的语言。我想做的是检索 每个language_id中    最近五个记录(ORDER BY time_posted- I- s# P/ m- L0 a
DESC LIMIT 5)列表。我可以使用许多不同的列表SQL查询在PHP中循环执行此操作,但我认为有一种更简单的方法。
8 R6 A- E, Z. v( R4 D$ T我必须得到一本书SQL书,哈哈。
9 ?- {' g& w' J' k8 G- f/ c/ S谢谢。  j' x' S2 R7 D% _4 q& g! v- v
                                                               
' {+ M5 p! w. y) N/ d- Y    解决方案:                                                               
9 j5 ]5 p- e" K- L, i                                                                这是我在MySQL每组前解决这个问题N查询个类型:
1 G) P8 r! k+ Y# B. A- Z; y" l) D9 bSELECT c1.*FROM codes c1LEFT OUTER JOIN codes c2  ON (c1.language_id = c2.language_id AND c1.time_posted < c2.time_posted)GROUP BY c1.idHAVING COUNT(*) < 5;
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则