[英]How to query distinct with order by?
以下是bids表里面的數據。
id, user_id, amount
1, 2, 100
2, 3, 200
3, 2, 200
4, 2, 200
我想查詢用戶的唯一user_id
和amount
。 此外,它需要是金額的desc
。 (查詢與 order by 不同)
結果應該類似於以下內容...
id, user_id, amount
2, 3, 200
3, 2, 200
我嘗試按照以下順序進行不同的排序
SELECT distinct user_id, amount FROM bids order by amount desc
結果與 user_id 重復,如下所示
id, user_id, amount
1, 2, 100
2, 3, 200
3, 2, 200
如何查詢user_id
是否唯一?
如果您想要每個user_id
amount
最高的第一行的其他值(例如id
),您可以使用LEFT JOIN
過濾掉金額相同或較低但id
值較高的行:
SELECT b1.*
FROM bids b1
LEFT JOIN bids b2 ON b2.user_id = b1.user_id AND b2.amount >= b1.amount AND b2.id > b1.id
WHERE b2.id IS NULL
ORDER BY b1.amount DESC
輸出:
id user_id amount
2 3 200
4 2 200
如果您不關心行中的其他值,您可以簡單地使用GROUP BY
和MAX
:
SELECT user_id, MAX(amount) AS amount
FROM bids
GROUP BY user_id
ORDER BY amount DESC
輸出:
user_id amount
2 200
3 200
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.