我有这张桌子
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
language_id指的是记录所使用的语言.
我想要做的是检索每个language_id中最近五个(ORDER BY time_posted DESC LIMIT 5)记录的列表.我可以在PHP中使用许多不同的SQL查询在循环中执行此操作,但我觉得有一种更简单的方法.
我必须得到一本关于sql的书,哈哈.
谢谢.
解决方法
以下是我在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;
另见“How do I select multiple items from each group in a mysql query?”
原文地址:https://www.jb51.cc/mssql/77481.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。