如何取出没有关联数据的字段值
怎么取出没有关联数据的字段值
有两个表
a表:
id name1 name 2
1 aa bb
2 aaa bbb
3 aaaa bbbb
b表:
aid num1 num2
1 70 100
2 71 200
其中a表id与b表aid关联
如何能查出下面的结果:
a.id a.nam1 a.name2 b.num2
1 aa bb 100
2 aaa bbb 200
3 aaaa bbbb
------解决思路----------------------
------解决思路----------------------
select a.*,b.num2 from a,b where a.id =b.id(+) and (b.num1=70 or b.num1=71) 这个是左关联后再去取num1 in(70,71)
select a.*,bb.num2 from a,(select aid,num2 from b where b.num1=70 or b.num1=71 )bb where a.id =bb.id(+) 这个是先num1 in(70,71) 再去取左关联,所以a表的id=3 会出来。你要是不理解,你在b表添加一条aid=3 的数据,再运行着两条语句你就明白。
(b.num1=70 or b.num1=71) 貌似直接写 b.num1 in(70,71)会好的。
------解决思路----------------------
select a.*,(select num2 from b where aid=a.id) num2 from a;
有两个表
a表:
id name1 name 2
1 aa bb
2 aaa bbb
3 aaaa bbbb
b表:
aid num1 num2
1 70 100
2 71 200
其中a表id与b表aid关联
如何能查出下面的结果:
a.id a.nam1 a.name2 b.num2
1 aa bb 100
2 aaa bbb 200
3 aaaa bbbb
------解决思路----------------------
select a.*,b.num2 from a,b where a.id =b.id(+)
------解决思路----------------------
select a.*,b.num2 from a,b where a.id =b.id(+) and (b.num1=70 or b.num1=71) 这个是左关联后再去取num1 in(70,71)
select a.*,bb.num2 from a,(select aid,num2 from b where b.num1=70 or b.num1=71 )bb where a.id =bb.id(+) 这个是先num1 in(70,71) 再去取左关联,所以a表的id=3 会出来。你要是不理解,你在b表添加一条aid=3 的数据,再运行着两条语句你就明白。
(b.num1=70 or b.num1=71) 貌似直接写 b.num1 in(70,71)会好的。
------解决思路----------------------
select a.*,(select num2 from b where aid=a.id) num2 from a;