2013-03-27 191 views
1

是否可以在没有任何子查询的情况下执行此查询?或者更少的代码?获得相同的结果。查询没有子查询? SQL

SELECT person 
FROM tbla 
WHERE person IN 
(SELECT person 
FROM tblb 
WHERE age IN 
(SELECT age 
FROM tblc 
where age = '20')); 
+1

如果不知道所选表格的结构,则无法真正回答这个问题。 – DanSingerman 2013-03-27 14:11:05

+0

谢谢大家的快速回复。像魅力一样工作。谢谢! – kvambaam 2013-03-27 14:24:52

回答

1
SELECT tbla.person 
FROM tbla 
inner join tblb on tblb.person = tbla.person 
inner join tblc on tblc.age = tblb.age 
WHERE tblc.age = '20' 
0

可以使用加入,但一个DISTINCT关键字是必需的,以消除重复行。

SELECT DISTINCT a.* 
FROM tbla a 
     INNER JOIN tblb b 
      ON a.person = b.person 
     INNER JOIN tblc c 
      ON b.age = c.age 
WHERE c.age = 20 

为了进一步获得更多的知识有关加入,请访问以下链接:

0

只要把你的tblctblb作为INNER JOIN

SELECT tbla.person 
FROM tbla 
INNER JOIN tblb 
    ON tblb.person = tbla.person 
INNER JOIN tblc 
    ON tblc.age = tblb.age 
WHERE tblc.age = 20;