如何解决需要二级子查询的SQL查询?

时间:2016-03-11 17:02:40

标签: mysql sql

我必须参考原始查询中的数据来检索子查询,并且不确定如何进行(至少以相当干净和有效的方式)。

这里有一些示例数据来说明我想要实现的目标:

id    original_id     flag   rec   
--    -----------     ----   ---
5           5          Y      1
6           5          N      1
7           5          N      1
8           15         N      1
9           15         N      1
10          10         Y      2
11          10         N      2

所以我试图选择所有记录的rec = 1和original_id =(标志的original_id =' Y'记录)

在这个例子中,我试图找回id(5,6,7),因为flag =' Y'的原始_id记录是5,因此select id where rec = 1 and original_id = 5返回我需要的内容。

为了记录,我试过

 select id
 from table t1 join
 table t2 on t1.id = t2.id and t2.original_id = t1.original_id and t1.current = 'Y'
 where t1.id = 1

但这只会返回' Y'记录,id = 5

我可以用什么SQL查询来检索这些记录?任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

看来你有太多了,

select id
from table t1 join
table t2 on t1.id = t2.id and 
t2.original_id = t1.original_id and t2.original_id
and t1.flag= 'Y'

答案 1 :(得分:1)

这应该返回您要查找的数据:

select t1.id
from table t1
inner join table t2
on t1.original_id = t2.id
and t2.flag = 'Y'
where t1.rec = 1