从表中查找前2个值

时间:2017-10-24 17:38:59

标签: sql h2 derby

这是我尝试的查询:好吧,如果我有1,2,3,4,5的项目。它应该给4& 5但这是返回2,3,4,5。如何在没有内置函数的情况下执行此操作

SELECT S.item, max(B.QUANTITY) 
FROM Bucket B, Store S 
WHERE  S.Store_ID = B.Store_ID 
AND QUANTITY >  (SELECT min(QUANTITY) 
                 FROM Store S, Bucket B 
                 WHERE S.Store_ID = B.Store_ID) 
                 GROUP BY S.item

2 个答案:

答案 0 :(得分:0)

试试这个:

select top (2) * from (

SELECT S.item, max(B.QUANTITY) 
FROM Bucket B, Store S 
WHERE  S.Store_ID = B.Store_ID 
AND QUANTITY >  (SELECT min(QUANTITY) 
                 FROM Store S, Bucket B 
                 WHERE S.Store_ID = B.Store_ID) 
                 GROUP BY S.item

) order by [Item] desc

您可能需要将[Item]替换为包含您要查找的“4”和“5”值的列。

答案 1 :(得分:0)

假设使用Oracle-SQL,您可以这样做:

SELECT *
  FROM (SELECT S.item, MAX(B.QUANTITY)
          FROM Bucket B, Store S
         WHERE S.Store_ID = B.Store_ID
         GROUP BY S.item
         ORDER BY MAX(B.QUANTITY) DESC)
 WHERE ROWNUM <= 2;

编辑:添加了一个groupBy,相信没有它就行不通!