簡體   English   中英

如何使用 order by 查詢不同?

[英]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_idamount 此外,它需要是金額的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是否唯一?

使用GROUP BYMAX

SELECT user_id, MAX(amount) FROM bids GROUP BY user_id order by MAX(amount) desc

如果您想要每個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 BYMAX

SELECT user_id, MAX(amount) AS amount
FROM bids
GROUP BY user_id
ORDER BY amount DESC

輸出:

user_id     amount
2           200
3           200

SQLFiddle 上的演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM