获取SQL中具有两个匹配值的记录
表A 表B获取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
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的选择中。