获取SQL中具有两个匹配值的记录

获取SQL中具有两个匹配值的记录,sql,Sql,表A 表B id1 | id2 | --------------- 2 | 3 | 4 | 5 | 我想获取groupid应该同时具有id1和id2的记录 因此,在本例中,应该检索uid1,2和5,6,因为groupid4和8都有它们 如何在SQL中实现这一点?通过SQL,假设SQL Server尝试此查询 groupid | parentid | uid ---------------- 4 | 2 (id1) | 1 4

表A

表B

id1 | id2     |
---------------
2  |    3     |
4  |    5     |
我想获取groupid应该同时具有id1和id2的记录

因此,在本例中,应该检索uid1,2和5,6,因为groupid4和8都有它们

如何在SQL中实现这一点?通过SQL,假设SQL Server

尝试此查询

groupid | parentid | uid
    ----------------
    4   | 2 (id1) |  1
    4   | 3 (id2) |  2
    6   | 2       |  3
    7   | 4 (Id1) |  4
    8   | 4 (Id1) |  5
    8   | 5 (Id2) |  6
    8   | 6       |  7
可能会返回您想要的内容

尝试此查询

groupid | parentid | uid
    ----------------
    4   | 2 (id1) |  1
    4   | 3 (id2) |  2
    6   | 2       |  3
    7   | 4 (Id1) |  4
    8   | 4 (Id1) |  5
    8   | 5 (Id2) |  6
    8   | 6       |  7

可能会返回您想要的内容

这将为您完成以下任务:

select b.uid from TableB b inner join TableA a on (a.id1 = b.parentid) inner join TableB c on (c.parentid = a.id2 and c.uid = b.uid)
在这里测试它:

这应该可以为您完成以下工作:

select b.uid from TableB b inner join TableA a on (a.id1 = b.parentid) inner join TableB c on (c.parentid = a.id2 and c.uid = b.uid)
在这里测试它:
(id1)
(id2)
parentId
列的一部分?还有,既然
groupid=8
两者都有,为什么不提取
uid=7
?您在使用哪一个?“SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加标记,
postgresql
oracle
sqlserver
db2
,…Ya。虽然它是团体的一部分,但也不应包括在内。但这不应该出现在uid的选择中。
(id1)
(id2)
parentId
列的一部分?这也是为什么
uid=7
没有被提取,因为
groupid=8
两者都有?您在使用哪一个?“SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加标记,
postgresql
oracle
sqlserver
db2
,…Ya。虽然它是团体的一部分,但也不应包括在内。但这不应该出现在uid的选择中。