Mysql 从单个表中选择两个用户之间的所有公用项
我有一张桌子 xyz存储用户和项目之间的关系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 试试这
| 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