我遇到此查询的问题 它正在执行退出但我无法理解 这个select语句是如何工作的。 任何有关此问题的帮助或解释将不胜感激.. 谢谢 这些是我的表和查询 我在这里寻找与他们工作的公司住在同一个城市的员工
表:-emp
eid name street city
----------- ---------------- ------------- ------------
1 yeman asd vasai
2 aksh adssd mumbai
3 chintan ghfgh mumbai
4 samual ghfdgh bandra
5 ddlj fghfgh andheri
6 jack fghnfg Bandra
7 bridge gfhfgh vasai
8 rahim ghfgh mumbai
9 chirag fghfghfg bandra
10 mistry hhhty bandra
11 ravi tytey andheri
表: - 公司
cid companyname city
----------- ------------------- ------------
1 Vasai Industries vasai
2 Mumbai Pharmacy mumbai
3 bandra loft bandra
4 andheri tactics andheri
表:=工作
eid cid salary
----------- ----------- -----------
1 1 200
2 3 4831
3 4 4457
4 2 20001
5 1 32221
6 2 224
7 3 784
8 1 336
9 3 2489
10 2 4789
11 1 22541
查询
select * from emp
where eid
IN (select eid from works
where cid=(select cid from company
where city=emp.city))
答案 0 :(得分:3)
为什么不将此查询与连接一起使用,然后很容易理解一堆子查询。
select * from emp
inner join works on works.eid = emp.eid
inner join company on company.city=emp.city
答案 1 :(得分:1)
<强>解释强>
1。select cid from company where city=emp.city
在这里,您将获得有关在emp和公司中相同的城市的城市ID
2
select eid from works
where cid=(select cid from company
where city=emp.city)
在这里你从工作表中获取id的集合,cid在emp和公司中是相同的
3
select * from emp
where eid
IN (select eid from works
where cid=(select cid from company
where city=emp.city))
在这里,您将获得所有基于emp id的记录,其城市在emp和city中相同