簡體   English   中英

連接和過濾同一表的兩組

[英]Joining and filtering two sets of the same table

我猜這是一個簡單而愚蠢的問題,但考慮到此mysql“購買”表(其中p_id是自動遞增的):

+---------+-------------+---------------+---------+
|   p_id  |    item_id  |  user_id      | count   | ... 
+---------+-------------+---------------+---------+
|       1 | 4           |             1 |       22|
|       2 | 4           |             2 |        1|
|       3 | 1           |             1 |        1|
|       4 | 0           |             3 |        1|
|       5 | 3           |             1 |      182|
|       6 | 0           |             4 |        1|
|       7 | 3           |             2 |        7|
|       8 | 3           |             2 |       14|
+---------+-------------+---------------+---------+

有什么合適的方法(查詢)來獲取ID為1和2的用戶購買了相同商品並且僅檢索了他們最后一次購買這些商品的行? 結果應該是這樣的:

+---------+-------------+---------------+---------+
|    p_id |    item_id  |  user_id      | count   | ... 
+---------+-------------+---------------+---------+
|       1 | 4           |             1 |       22|
|       2 | 4           |             2 |        1|
|       5 | 3           |             1 |      182|
|       8 | 3           |             2 |       14|
+---------+-------------+---------------+---------+

非常感謝,抱歉我的英語不好!

嘗試這個

SELECT p.p_id,p.item_id,p.user_id,p.`count`
FROM purchase p,
   (SELECT MAX(P1.p_id)as p_id,item_id,user_id
    FROM purchase P1
    WHERE EXISTS (SELECT 1 FROM purchase P2
                  WHERE P2.item_id = P1.item_id
                  AND P2.user_id <> P1.user_id
                  AND P2.user_id IN (1,2))
    AND P1.user_id IN (1,2)
    GROUP BY item_id,user_id)as result
WHERE result.p_id = p.p_id
ORDER BY p.p_id;

結果

1|4|1|22
2|4|2|1
5|3|1|182
8|3|2|14

暫無
暫無

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

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