我有3张 table :
-
项(item_id,时间戳)
-
items_terms(item_id,term_id)
-
个术语(term_id,term_name)
我需要根据项目时间戳找到5个最近的术语(term_id,term_name) . 我试图像这样解决它:
SELECT t.term_id, t.term_name
FROM items i
INNER JOIN items_terms it USING(item_id)
INNER JOIN terms t USING (term_id)
GROUP BY t.term_id
ORDER BY i.timestamp DESC
LIMIT 5
但问题是MySQL会首先对项目进行分组(它将占用第一个term_id)并忽略ORDER BY ..
我还考虑通过删除GROUP BY并选择5个以上的项来过滤PHP,但是这个查询需要在连续页面上支持分页而不重复 .
很高兴看到任何建议 .
3 回答
如何在select语句中包含时间戳:
我建议阅读本文,因为在MySQL中有几种技术可以限制GROUP BY选择组中的行,很少有可能适合您的需要 . 通常使用带有查询“全局”变量的HAVING指令应该是首选的,因为它对已经分组的结果集进行操作,这会对性能产生积极影响 .
编辑:解决方案将是: