我需要检查一列中的2个或更多值并提取数据。它不像使用“in”运算符。
实施例: 我有一个表有两列用户ID,标准ID。我的应用程序发送标准ID的多个值。现在我需要找到拥有所有标准权利的用户。
在下面的示例中,我需要找到映射到529和551的“UserID”。
UserID StandardId
9- 529
12- 529
12- 551
15- 529
17- 551
17- 529
18- 529
21- 529
21- 551
49- 529
58- 529
60- 529
62- 529
62- 551
64- 529
64- 551
81- 529
83- 529
83- 551
226- 551
226- 529
298- 551
298- 529
335- 529
根据当前的映射,有7个标准需要验证。这种映射可能会在未来增长。
答案 0 :(得分:1)
我可能不完全理解你的问题,但这会有效吗?
SELECT UserId FROM [table] WHERE StandardId = 529
INTERSECT
SELECT UserId FROM [table] WHERE StandardId = 551
有关INTERSECT
次查询的详情,请参阅here。
答案 1 :(得分:1)
我认为您可以对ID进行分组并创建聚合函数以检查它是否与这两个值匹配
答案 2 :(得分:1)
试试这个
Select t.id
from table t
join table t1
on t.userid = t1.userid
where t.standardid= 529 and t1.standardid = 551
答案 3 :(得分:0)
SELECT UserId FROM [table] WHERE StandardId IN (529, 551/*you can pass in the list here*/)
GROUP BY UserId
HAVING COUNT(StandardId) > 1 /*can change to more when the list is longer*/