我有一个独特的要求,即只有当第二个表至少有一个带有某个标志的记录时,才能根据另一个表从一个表中选择记录。查询不应返回同一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.
请帮忙。
答案 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分组