奇怪的left join联合查询

glassy2000 2010-10-06 02:48:06
按说left join是以左表记录为主,但我查询到的却不一样,救命啊
表tb_a
bom pno
a ddfsd
b sdf
表tb_b
id bom item
1 a x
2 b y
3 a z

查询:
select * from tb_a a left join tb_b b on a.bom=b.bom

结果为:
bom pno id bom item
a ddfsd 1 a x
a ddfsd 3 a z
b sdf 2 b y

以上结果不是我要的,请问如何才能得到2条记录的结果啊??
...全文
72 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jamk 2010-10-06
  • 打赏
  • 举报
回复
正确哇 没问题
你要的结果应该是这样的表
表tb_a
bom pno
a ddfsd
b sdf
表tb_b
id bom item
1 a x
2 b y
3 c z
这样就只有两条了。
glassy2000 2010-10-06
  • 打赏
  • 举报
回复
谢谢大家!
claro 2010-10-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 glassy2000 的回复:]
left join不是以左表记表为准吗,现在左表只有2条记录,为什么结果会有3条记录呢?
[/Quote]难道结果没有以左表为准吗?
您没理解!
insert into tb_b select 4,'c','n'

插入一条不存在于左表的记录 ,再想想左连接。

--两条记录
select * 
from tb_a a
left join (select bom,max(item) item tb_b group by bomon ) b a.bom=b.bom
xiaoxiangqing 2010-10-06
  • 打赏
  • 举报
回复
結果是對的。以左表為主,不是說左表有幾條,結果就只幾條,而是說如果右表沒有與左表匹配的記錄時,左表仍然為顯示
「已注销」 2010-10-06
  • 打赏
  • 举报
回复
A表
bom pno
a ddfsd
b sdf

B表
id bom item
1 a x
2 b y
3 a z
A表的bom为a,b
B表的bom为a,b

你做on连接不出来才是问题呢。




jwwyqs 2010-10-06
  • 打赏
  • 举报
回复
那左边的a那条记录是以b表的id=1 为准呢,还是id=3为准呢 这两条都是匹配的所以都会显示出来的
jwdream2008 2010-10-06
  • 打赏
  • 举报
回复
glassy2000 2010-10-06
  • 打赏
  • 举报
回复
left join不是以左表记表为准吗,现在左表只有2条记录,为什么结果会有3条记录呢?
jwwyqs 2010-10-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 beirut 的回复:]
得到两条?
表tb_a 的 bom=a 和tb_b表的bom=a 那条匹配呢?id最小的还是????
[/Quote]
是啊,不明白!1
黄_瓜 2010-10-06
  • 打赏
  • 举报
回复
得到两条?
表tb_a 的 bom=a 和tb_b表的bom=a 那条匹配呢?id最小的还是????

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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