[英]MySQL Group By and return distinct rows from grouped result based on conditions
[英]Any way to group the result of a DISTINCT and get the COUNT of the rows grouped correctly?
我有這個查詢:
SELECT DISTINCT w.buyer_id, u.username, a.cb_id
FROM winners AS w
INNER JOIN auctions AS a ON w.auction_id=a.auction_id AND a.cb_id > 0 AND a.category_id=1922
INNER JOIN users AS u ON w.buyer_id=u.user_id
因此,基本上,我試圖找出每個w.buyer_id
關於a.cb_id
涉及多少個唯一條目。
為此,我運行了上面的查詢,並得到了一行一行的結果,這很好,因為它顯示了所有唯一值; 因此我可以看到用戶A有14行(其中涉及14個唯一的CB ID),用戶B可能有5行。
因此,我想這樣做,以便獲得記錄集,輸出為:
w.buyer_id,u.username,count
我嘗試了以下方法:
SELECT DISTINCT w.buyer_id, u.username, a.cb_id, COUNT(*) AS unique_spots
FROM winners AS w
INNER JOIN auctions AS a ON w.auction_id=a.auction_id AND a.cb_id > 0 AND a.category_id=1922
INNER JOIN users AS u ON w.buyer_id=u.user_id
GROUP BY w.buyer_id
LIMIT 5000;
...但是它返回COUNT
,就好像我什至沒有對記錄集應用DISTINCT
。
我在這里做錯了什么?
僅編寫查詢直接執行您想要的操作怎么樣?
SELECT w.buyer_id, COUNT(DISTINCT a.cb_id)
FROM winners w INNER JOIN
auctions a
ON w.auction_id = a.auction_id AND a.cb_id > 0 AND
a.category_id = 1922 INNER JOIN
users u ON w.buyer_id = u.user_id
GROUP BY w.buyer_id;
加入users
似乎是多余的:
SELECT w.buyer_id, COUNT(DISTINCT a.cb_id)
FROM winners w INNER JOIN
auctions a
ON w.auction_id = a.auction_id AND a.cb_id > 0 AND
a.category_id = 1922
GROUP BY w.buyer_id;
您是否嘗試過:
SELECT w.buyer_id, u.username, a.cb_id, COUNT(*) AS unique_spots
FROM winners AS w
INNER JOIN auctions AS a ON w.auction_id=a.auction_id AND a.cb_id > 0 AND a.category_id=1922
INNER JOIN users AS u ON w.buyer_id=u.user_id
GROUP BY w.buyer_id, u.username, a.cb_id
LIMIT 5000;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.