Mysql 从单个表中选择两个用户之间的所有公用项

Mysql 从单个表中选择两个用户之间的所有公用项,mysql,sql,select,Mysql,Sql,Select,我有一张桌子 xyz存储用户和项目之间的关系 | user_id | item_id | ---------------------- 一个项目可以属于一个或多个用户,反之亦然 因此,给定用户A和用户B,我如何执行mysql查询来选择同时属于用户A和用户B的所有项目?试试这个: SELECT Item_ID FROM xyz WHERE User_ID IN ('A','B') GROUP BY Item_ID HAVING COUNT(distinct user_id) = 2 试试这

我有一张桌子

xyz存储用户和项目之间的关系

| user_id |  item_id |
----------------------
一个项目可以属于一个或多个用户,反之亦然

因此,给定用户A和用户B,我如何执行mysql查询来选择同时属于用户A和用户B的所有项目?

试试这个:

SELECT Item_ID
FROM xyz
WHERE  User_ID IN ('A','B')
GROUP BY Item_ID
HAVING COUNT(distinct user_id) = 2
试试这个:

SELECT Item_ID
FROM xyz
WHERE  User_ID IN ('A','B')
GROUP BY Item_ID
HAVING COUNT(distinct user_id) = 2
如果用户标识和项目标识的组合不唯一,请使该选择不同

如果用户id和项目id的组合不是唯一的,请选择“不同”。

另一个选项:

select item_id from xyx
where item_id IN(select item_id from xyz where user_id ='A')
and item_id IN(select item_id from xyz where user_id ='B')
另一种选择:

select item_id from xyx
where item_id IN(select item_id from xyz where user_id ='A')
and item_id IN(select item_id from xyz where user_id ='B')
这就足够了:

ANSI SQL'y方式:

select item_id
from xyz
group by item_id
having sum(case when user_id in ('A','B') then 1 end) = 2
这就足够了:

ANSI SQL'y方式:

select item_id
from xyz
group by item_id
having sum(case when user_id in ('A','B') then 1 end) = 2
一种方法是

从中选择temp1.item_id 从pcadminlogging中选择不同的项目\u id 其中userid='A' 作为临时工1 参加 从pcadminlogging中选择不同的项目\u id 其中userid='B' 作为临时工2 在temp1.item_id=temp2.item_id上 哪里 “A”和“B”中的temp1.userid可以是一种方式

从中选择temp1.item_id 从pcadminlogging中选择不同的项目\u id 其中userid='A' 作为临时工1 参加 从pcadminlogging中选择不同的项目\u id 其中userid='B' 作为临时工2 在temp1.item_id=temp2.item_id上 哪里
“A”和“B”中的temp1.userid

一些示例数据会更好一些示例数据会更好nice@Andomar:我想应该是:countdistinct user\u id=2@Andomar:我想应该是:countdistinct user\u id=2