我有一张table
rowid item item title
1 pen pen 1
2 pen pen 2
3 pencil pencil 1
4 pencil pencil 2
5 pen pen 3
6 paper paper 1
7 pencil pencil 3
8 paper paper 2
9 paper paper 3
我需要一个查询,可以在mysql输出这样的
rowid item item title
1 pen pen 1
2 pen pen 2
6 paper paper 1
8 paper paper 2
3 pencil pencil 1
4 pencil pencil 2
我的意思是,对于每个不同的项目,查询需要输出前2个项目标题,也请给我查询
获取每个项目的最后10行或n行,而不是前2行
5条答案
按热度按时间zzzyeukh1#
请尝试以下查询:
Demo
kzmpq1sx2#
这是一个最适合分析函数的问题,比如行号和排名。但是,由于您的MariaDB版本不支持它们,我们必须找到一个解决方法。
一种不需要任何动态SQL的方法是创建一个查询,该查询查找每个项目组的最小值和次小值
rowid
。然后,我们只需将原始表连接到该子查询,以便仅保留前两个匹配行。Demo(第一个字母)
xqk2d5yq3#
我将使用带有
LIMIT
子句的相关子查询:如果您需要最新的
itemtitle
,则执行ORDER BY t1.itemtitle DESC
,并使用10
或n
修改LIMIT
子句。ktca8awb4#
假设每个项目至少有两行,这将是可行的:
您可以使用
coalesce()
来行程只有一列的项目:d7v8vwbk5#