如何通过比较一列中的两个不同值来提取记录

时间:2014-07-16 07:53:19

标签: sql

我需要检查一列中的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个标准需要验证。这种映射可能会在未来增长。

4 个答案:

答案 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*/