表A
-ID
-B_ID
-AA
-AAA
-...表B
-ID
-BB
-BBB
-...其中B_ID与表B的ID多对一对应,现要求列出表B的所有数据,并且列出表A中有B_ID与对应ID相同的数据,本人初学关系型数据库,请指教。
以前我是先用表B查出所有的数据,每读一个表B数据就从表A中查一次,这样效率太低,有没有好的解决办法,谢了。

解决方案 »

  1.   

    select B.*,A.* from B left join A on B.ID=A.B_ID
      

  2.   

    應該改成這樣
    select A.*,B.* from A left join B on A.B_ID=B.ID因為A表的B_ID与表B的ID多对一对应,所以把A表當成主表,B表當成從表
    用左連,兩個表相連,無論條件什麼樣?主表的數據一定全部被選出來,從表符合條件的記錄被出來,不符合條件的記錄用null填充
      

  3.   

    select B.*,                               ' 列出B表的所有表数据 
    A.* from B left join A on B.ID=A.B_ID     ' A表中B_ID等于B表中ID的数据
      

  4.   

    你要熟悉的還有
    right join 右連,意思與左連恰好相反
    inner join 內連,兩邊都符合條件的才選出來
    full  join 兩邊符合條件的,以及左邊不符合條件的,還以及右邊不符合條件的
      

  5.   

    记录里面A与B里面的数据摆放的顺序是怎么样的呢?是前边是A里面的全部数据,后全是B的数据。还是A一条,几条符合要求的B数据,再一条A,几条符合要求的B数据呢?
    我想显示成这样:第一个B.BB 和 (B_ID=第一个B.ID的所有)A.AA
    第二个B.BB 和 (B_ID=第二个B.ID的所有)A.AA得到你那个集合后怎么显示呢?
      

  6.   

    用left join!
    from B left join B.ID=A.B_ID