请教关系数据库的SQL语句。
表A
-ID
-B_ID
-AA
-AAA
-...
表B
-ID
-BB
-BBB
-...
其中B_ID与表B的ID多对一对应,现要求列出表B的所有数据,并且列出表A中有B_ID与对应ID相同的数据,本人初学关系型数据库,请指教。
以前我是先用表B查出所有的数据,每读一个表B数据就从表A中查一次,这样效率太低,有没有好的解决办法,谢了。
问题点数:20、回复次数:7Top
1 楼hdhai9451(☆新人类☆)回复于 2004-09-03 23:11:23 得分 0
select B.*,A.* from B left join A on B.ID=A.B_IDTop
2 楼smalle(锋)回复于 2004-09-03 23:23:31 得分 0
可以解释一下这句的效果吗?得到的记录是怎么的?Top
3 楼hdhai9451(☆新人类☆)回复于 2004-09-03 23:31:40 得分 15
應該改成這樣
select A.*,B.* from A left join B on A.B_ID=B.ID
因為A表的B_ID与表B的ID多对一对应,所以把A表當成主表,B表當成從表
用左連,兩個表相連,無論條件什麼樣?主表的數據一定全部被選出來,從表符合條件的記錄被出來,不符合條件的記錄用null填充
Top
4 楼cosio()回复于 2004-09-03 23:32:42 得分 5
select B.*, ' 列出B表的所有表数据
A.* from B left join A on B.ID=A.B_ID ' A表中B_ID等于B表中ID的数据
Top
5 楼hdhai9451(☆新人类☆)回复于 2004-09-03 23:35:17 得分 0
你要熟悉的還有
right join 右連,意思與左連恰好相反
inner join 內連,兩邊都符合條件的才選出來
full join 兩邊符合條件的,以及左邊不符合條件的,還以及右邊不符合條件的Top
6 楼smalle(锋)回复于 2004-09-03 23:47:39 得分 0
记录里面A与B里面的数据摆放的顺序是怎么样的呢?是前边是A里面的全部数据,后全是B的数据。还是A一条,几条符合要求的B数据,再一条A,几条符合要求的B数据呢?
我想显示成这样:
第一个B.BB 和 (B_ID=第一个B.ID的所有)A.AA
第二个B.BB 和 (B_ID=第二个B.ID的所有)A.AA
得到你那个集合后怎么显示呢?
Top
7 楼cosio()回复于 2004-09-10 11:05:43 得分 0
用left join!
from B left join B.ID=A.B_IDTop




