请教关系数据库的SQL语句。

smalle 2004-09-03 11:05:48
表A
-ID
-B_ID
-AA
-AAA
-...

表B
-ID
-BB
-BBB
-...

其中B_ID与表B的ID多对一对应,现要求列出表B的所有数据,并且列出表A中有B_ID与对应ID相同的数据,本人初学关系型数据库,请指教。
以前我是先用表B查出所有的数据,每读一个表B数据就从表A中查一次,这样效率太低,有没有好的解决办法,谢了。
...全文
106 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cosio 2004-09-10
  • 打赏
  • 举报
回复
用left join!
from B left join B.ID=A.B_ID
smalle 2004-09-03
  • 打赏
  • 举报
回复
记录里面A与B里面的数据摆放的顺序是怎么样的呢?是前边是A里面的全部数据,后全是B的数据。还是A一条,几条符合要求的B数据,再一条A,几条符合要求的B数据呢?
我想显示成这样:

第一个B.BB 和 (B_ID=第一个B.ID的所有)A.AA
第二个B.BB 和 (B_ID=第二个B.ID的所有)A.AA

得到你那个集合后怎么显示呢?
Andy__Huang 2004-09-03
  • 打赏
  • 举报
回复
你要熟悉的還有
right join 右連,意思與左連恰好相反
inner join 內連,兩邊都符合條件的才選出來
full join 兩邊符合條件的,以及左邊不符合條件的,還以及右邊不符合條件的
cosio 2004-09-03
  • 打赏
  • 举报
回复
select B.*, ' 列出B表的所有表数据
A.* from B left join A on B.ID=A.B_ID ' A表中B_ID等于B表中ID的数据
Andy__Huang 2004-09-03
  • 打赏
  • 举报
回复
應該改成這樣
select A.*,B.* from A left join B on A.B_ID=B.ID

因為A表的B_ID与表B的ID多对一对应,所以把A表當成主表,B表當成從表
用左連,兩個表相連,無論條件什麼樣?主表的數據一定全部被選出來,從表符合條件的記錄被出來,不符合條件的記錄用null填充
smalle 2004-09-03
  • 打赏
  • 举报
回复
可以解释一下这句的效果吗?得到的记录是怎么的?
Andy__Huang 2004-09-03
  • 打赏
  • 举报
回复
select B.*,A.* from B left join A on B.ID=A.B_ID

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧