根据列值获取相交的行

时间:2019-04-03 09:44:40

标签: sql sql-server database

我在SQL Server中有一个表。这是表中当前存储数据的方式:

table data

我想在提供多个role_id 时获得所有常用menu_id 。 例如:我想要 menu_id 1 ,当提供的role_id为1和3时,因为menu_id 1对于所有指定的role_id是通用的。我不知道我应该使用什么查询。谁能帮我吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

您似乎希望有menu_id个值列表的role_id个。这应该做您想要的:

select menu_id
from t
where role_id in (1, 3)
group by menu_id
having count(*) = 2;  -- number of values in IN list

Here是db <>小提琴。

答案 1 :(得分:1)

group byhaving一起使用

select menu_id from tablename
group by menu_id
having count(distinct role_id)>1