社区
MS-SQL Server
帖子详情
关于left join
xiezonglin
2011-06-02 09:35:04
我在查一个表的时候,没用left join 记录数是对的,加了left join就多了很多重复的记录
去掉又正常了
left join不是以左表为准吗?怎么会使记录数增加?
...全文
160
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 呗
Access数据库基础课程
本课程为《Access数据库基础课程》,主要讲解为两部分,第一部分是...内容)、数据的分类汇总,求最大值、最小值、平均值、排序、不重复、top、swicth语句、iif语句、len语句、
left
、
left
join
多表联查等等众多语句
oracle关于
left
Join
中on条件有标识符无效的原因
我有一个project项目表,还有一个他的明细project_info表。...select p.code projectCode , p.name projectNamefrom project p, project_info info
left
join
user u on u.id = info.manager
left
joi...
left
join
和
left
outer
join
有什么区别?这样解释通俗易懂
作为一名java程序员,求职面试时也会...关于
left
join
我平时编写sql表关联时用得比较多,但对于
left
outer
join
我很少用到,所以对于两者之间有什么区别,我没搞懂,于是这道题目有没有作答,面试官看了也问了下,我...
关于
Left
Join
On的使用
在进行公司项目超猿的CRMPC端后台会员列表页面开发时,初始为了省事方便,直接使用全表查询,由于该功能项设计了三个表的数据,全表查询导致了查询速度过于...
Left
Join
俗称左连接,也就是吧
left
join
左边的表的记录全
hive关于
left
join
和
join
时候on条件总结
left
join
b on(a.字段=b.字段) 正常 2、如果 select * from a
left
join
b on(a.字段=b.字段,b.字段=某值,b.……) 正常 3、如果 select * from a
left
join
b on(a.字段=b.字段,a.字段=某值,a.……) 工作正常该...
MS-SQL Server
34,587
社区成员
254,588
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章