Mysql 连接和筛选同一表的两组
我想这是一个简单而愚蠢的问题,但考虑到这个mysql“购买”表(其中p_id是自动递增的): 如果ID为1和2的用户购买了相同的物品,并且只检索了他们上次购买的物品,那么获取这些物品的行的适当方式(查询)是什么? 结果应该是这样的:Mysql 连接和筛选同一表的两组,mysql,sql,Mysql,Sql,我想这是一个简单而愚蠢的问题,但考虑到这个mysql“购买”表(其中p_id是自动递增的): 如果ID为1和2的用户购买了相同的物品,并且只检索了他们上次购买的物品,那么获取这些物品的行的适当方式(查询)是什么? 结果应该是这样的: +---------+-------------+---------------+---------+ | p_id | item_id | user_id | count | ... +---------+-------------
+---------+-------------+---------------+---------+
| 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;
试试这个
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;
Yeh sqlFiddle网站又上线了。这是Yeh sqlFiddle网站再次上线。这是我的建议
1|4|1|22
2|4|2|1
5|3|1|182
8|3|2|14