社区
MS-SQL Server
帖子详情
关于left join
xiezonglin
2011-06-02 09:35:04
我在查一个表的时候,没用left join 记录数是对的,加了left join就多了很多重复的记录
去掉又正常了
left join不是以左表为准吗?怎么会使记录数增加?
...全文
202
18
打赏
收藏
关于left join
我在查一个表的时候,没用left join 记录数是对的,加了left join就多了很多重复的记录 去掉又正常了 left join不是以左表为准吗?怎么会使记录数增加?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Spade_J
2011-06-02
打赏
举报
回复
[Quote=引用 17 楼 xiezonglin 的回复:]
引用 16 楼 spade_j 的回复:
select
字段,
字段,
(select top 1 字段 from b where a.字段=b.字段 order by 字段) as ...
...
from a
有点负责,我实际的查询还更复杂,甚至是连接好几个表,还有求和,难道就只有这种方式了?
[/Quote]
那用exists吧
select * from b where not exist(select 1 from b c where b.字段=c.字段 and ......)
上面的来代替b
xiezonglin
2011-06-02
打赏
举报
回复
[Quote=引用 16 楼 spade_j 的回复:]
select
字段,
字段,
(select top 1 字段 from b where a.字段=b.字段 order by 字段) as ...
...
from a
[/Quote]
有点负责,我实际的查询还更复杂,甚至是连接好几个表,还有求和,难道就只有这种方式了?
Spade_J
2011-06-02
打赏
举报
回复
select
字段,
字段,
(select top 1 字段 from b where a.字段=b.字段 order by 字段) as ...
...
from a
xiezonglin
2011-06-02
打赏
举报
回复
[Quote=引用 12 楼 cainlai 的回复:]
看你的描述,你可能应该用inner join
[/Quote]
试了,结果一样
xiezonglin
2011-06-02
打赏
举报
回复
[Quote=引用 11 楼 spade_j 的回复:]
引用 8 楼 xiezonglin 的回复:
引用 4 楼 xyctc 的回复:
是以左为准,但要看数据及条件,出现左表对右表是一对多的情况,记录当然会增加
那怎样才能解决这个问题?就算左表对右边是一对多,但是我只要右边的第一条记录
查询时用
select top 1 * from b oder by 字段
来代替b
[/Quote]
问题是我要的是on的条件执行了以后的第一条记录,感觉不好弄阿
还有就是能不能这样,就是如果是一对多,那么我再增加一个条件,如果是一对一,那就不增加条件了
daishaodong
2011-06-02
打赏
举报
回复
left join的话,左表的全部记录会出来,右表如果没有对应左表的记录,会以null的形式出现。。
CainLai
2011-06-02
打赏
举报
回复
看你的描述,你可能应该用inner join
Spade_J
2011-06-02
打赏
举报
回复
[Quote=引用 8 楼 xiezonglin 的回复:]
引用 4 楼 xyctc 的回复:
是以左为准,但要看数据及条件,出现左表对右表是一对多的情况,记录当然会增加
那怎样才能解决这个问题?就算左表对右边是一对多,但是我只要右边的第一条记录
[/Quote]
查询时用
select top 1 * from b oder by 字段
来代替b
chuanzhang5687
2011-06-02
打赏
举报
回复
那就不要left join
--小F--
2011-06-02
打赏
举报
回复
除了一对一的以外,一对多也可以出现多的值
匹配左边的表
如果是这样
a
id col
1 a
2 b
3 c
b
id col
1 a
2 b
2 c
3 e
3 d
3 f
这样的话 就可能一对多
xiezonglin
2011-06-02
打赏
举报
回复
[Quote=引用 4 楼 xyctc 的回复:]
是以左为准,但要看数据及条件,出现左表对右表是一对多的情况,记录当然会增加
[/Quote]
那怎样才能解决这个问题?就算左表对右边是一对多,但是我只要右边的第一条记录
Spade_J
2011-06-02
打赏
举报
回复
数量应该是
a*b - 条件过滤掉的数量 + 添加外部行的数量
xiaoxiangqing
2011-06-02
打赏
举报
回复
left join是以左表为主,意思是左表的数据都会出来,不管右表有没有与它匹配的记录
xiezonglin
2011-06-02
打赏
举报
回复
就是left jion后面的表on的条件使后面的表多个记录对应前面一个记录
Billy
2011-06-02
打赏
举报
回复
是以左为准,但要看数据及条件,出现左表对右表是一对多的情况,记录当然会增加
东那个升
2011-06-02
打赏
举报
回复
left join 是左表存在,右表不存在的记录也会查询出来
AcHerat
元老
2011-06-02
打赏
举报
回复
[Quote=引用楼主 xiezonglin 的回复:]
我在查一个表的时候,没用left join 记录数是对的,加了left join就多了很多重复的记录
去掉又正常了
left join不是以左表为准吗?怎么会使记录数增加?
[/Quote]
因为你右边表经过连接条件对应出来的记录数是多条,所以结果便会有多条。
例如 a 表 id
id
---
1
b 表 id aid
id------aid
------------
1 ------ 1
2 ------ 1
select *
from a left join b on a.id = b.aid
结果集记录数便是b表的记录数!
hanger1212
2011-06-02
打赏
举报
回复
right join 呗
left
join
和inner
join
的区别
一.
Join
查询原理 查询原理:MySQL内部采用了一种叫做 nested loop
join
(嵌套循环连接)的算法。Nested Loop
Join
实际上就是通过驱动表的结果集作为循环基础数据,然后一条一条的通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果。如果还有第三个参与
Join
,则再通过前两个表的
Join
结果集作为循环基础数据,再一次通过循环查询条件到第三个表中查询数据,如此往复,基本上MySQL采用的是最容易理解的算法来实现
join
。所以驱动表的选择非常重要,驱动表的数据
left
semi
join
和
left
join
区别
left
semi
join
和
left
join
联系和区别 1、都是左表连接,但是semi
join
右表关联不左表也不会出来,
left
join
不一样 2、semi
join
只能查询左表信息,
left
join
可以查询所有 3、semi
join
是
left
join
的一种优化 4、semi
join
一般使用查询存在的情况 例子: 数据准备: 1,a 2,b 3,c 4,d 7,y 8,u ...
inner
join
,
left
join
和right
join
的区别
连接类型是否保留左表所有行?是否保留右表所有行?未匹配的字段填充INNER
JOIN
❌❌不保留未匹配行
LEFT
JOIN
✔️❌右表字段为NULLRIGHT
JOIN
❌✔️左表字段为NULL。
mysql,
LEFT
OUTER
JOIN
与
LEFT
JOIN
,RIGHT OUTER
JOIN
与RIGHT
JOIN
,FULL OUTER
JOIN
与 FULL
JOIN
区别与联系
I have seen
join
s called
LEFT
OUTER
JOIN
or RIGHT OUTER
JOIN
. In some places I have seen
LEFT
JOIN
or RIGHT
JOIN
. I am confused by this. I posted a question 2 days ago, but I am unable to understand ...
left
join
和right
join
SQL
LEFT
JOIN
关键字
LEFT
JOIN
关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
LEFT
JOIN
关键字语法 SELECT column_name(s) FROM table_name1
LEFT
JOIN
table_name2 ON table_name1.column_name=tab...
MS-SQL Server
34,875
社区成员
254,639
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章