从基于另一个表的表中选择Oracle的记录数

时间:2014-05-07 10:32:55

标签: sql oracle

我有一个独特的要求,即只有当第二个表至少有一个带有某个标志的记录时,才能根据另一个表从一个表中选择记录。查询不应返回同一ID的两条记录:示例: 表1

id  name    location
4   myname  MyLocation
6   hisname HisLocation
7   hername herlocation

此表中的ID是唯一的: 表二

id  details1   details2    closureflg
4   somdetails somedetails  Y
4   somdetails somedetails  Y
6   somdetails somedetails  N
7   somdetails somedetails  N
7   somdetails somedetail   N

我需要从第一个表中选择一个记录,只要相应的id在表2中有关闭标志为N的记录:

我试过了:

select * from table1 where id in(select id from tbale2 where closureflg = 'N');

这将返回id 7的两条记录;

我的预期输出:

id  name    location
6   hisname HisLocation
7   hername herlocation.

请帮忙。

2 个答案:

答案 0 :(得分:1)

请试试这个

SELECT * 
FROM table1 t1
WHERE EXISTS(SELECT * FROM table2 t2 WHERE closureflag = 'N' AND t1.ID = t2.ID);

答案 1 :(得分:0)

我会尝试加入

从table1中选择id,name,location    在table1.id = table2.id上连接table2    table2.closureflg =' N'     按ID分组