查找每个商家信息的最大金额和第二个最高金额

时间:2013-09-17 14:37:14

标签: mysql

我有一个我想查询信息的出价表 表结构是:id,item_id,price,date,user_id
许多用户在此表格上出价。我需要找到所有item_id的列表,其中包含收到的最高价格,以及同一项目的第二个最高价格。

这是我到目前为止所拥有的

SELECT item_id, MAX(price) as MAX, (SELECT MAX(price) FROM TABLE GROUP BY item_id, LIMIT 1,1) FROM TABLE WHERE date > 2013-01-01 GROUP BY item_id  

我缺少什么

这是我得到的结果

item_id    MAX    USER_ID    MAX(PRICE)
1          17222     122       22500
2          15888     161       22500

对于我的所有下一个项目,第二个项目总是22500,如何获得第二个最佳出价的实际第二个值?

2 个答案:

答案 0 :(得分:0)

好的,这是经过测试的。试试吧:

SELECT t1.item_id, 
MAX(t1.price) AS MAX1, 
(SELECT t2.price FROM TABLE AS t2 WHERE t2.item_id = t1.item_id ORDER BY t2.price DESC LIMIT 1,1) AS MAX2 
FROM TABLE AS t1 
WHERE t1.date > 2013-01-01 
GROUP BY t1.item_id

答案 1 :(得分:0)

这是一种替代机制,使用substring_index() / group_concat()技巧。据推测,您还希望用户使用您的查询不会执行的最高价格。试试这个:

select item_id, max(price) as maxprice,
       substring_index(group_concat(user_id order by price desc), ',', 1) as user_id,
       substring_index(substring_index(group_concat(price order by price desc),
                                       ',', 2),
                       ',', -1) as secondprice
from t
group by item_id;