| uId | title | amount | makers | widgets |
1 richard 998 xcorp sprocket
2 swiss 995 ycorp framitz
3 ricky 90 zcorp flobber
4 ricky2 798 xcorp framitz
1 lilrick 390 xcorp sprocket
1 brie 200 mcorp gullywok
1 richard 190 rcorp flumitz
1 brie 490 bcorp sprocket
我想每makers
检索只有3条记录,前3 amounts
,他们生产的
这里的widgets
是我有什么:
SELECT amount, makers FROM (SELECT amount, makers, (SELECT count(*) FROM entry as t2
WHERE t2.amount = t1.amount and t2.makers >= t1.makers) AS RowNum
FROM entry as t1
) t3
WHERE t3.RowNum<4 order by amount;
这是否返回我真正需要的?有没有更好的方法来解决这个问题?我见过的大多数做这种事情的方式都是在不同的桌子上进行连接等,我需要的所有信息都放在一张桌子上。
预期输出:
| uId | title | amounts | makers | widgets |
1 richard 998 xcorp sprocket
41 swiss 995 xcorp widget
989 richard 989 xcorp sprocket
22 swiss 995 ycorp framitz
92 swiss 990 ycorp widget
456 swiss 895 ycorp flobber
344 ricky 490 zcorp flobber
32 tricky 480 zcorp flobber
13 ricky 470 zcorp flobber
等等
的makers
不要紧这么多的获得前3名amounts
每个makers
的顺序,以及他们所提供的widgets
。的makers
次数设定,总是会有x
makers
鉴于你的问题的数据。例如,您可以显示预期outout为表? –
根据您的示例数据,预期输出似乎没有任何意义。另外,如果你需要帮助,你应该回去接受你的问题的过去答案。当别人试图找到你已经问过的问题的答案时,承认那些帮助你的人并且使这个网站更有用。 –
做到了!我的疏忽和感谢! – roberthuttinger