LEFT JOIN以后记录数变少了

jronald 2008-09-27 07:29:14
SELECT a.gid,avg10,avg20 FROM 
(SELECT gid,avg10=(first_volt+last_volt)*0.5 FROM ak000515_10) a LEFT JOIN
(SELECT gid,avg20=(first_volt+last_volt)*0.5 FROM ak000515_20) b ON (b.gid+1)*2-1=a.gid
WHERE a.gid BETWEEN 324 AND 382
没问题,显示了324到382条记录

SELECT a.gid,avg10,avg20 FROM 
(SELECT gid,avg10=(first_volt+last_volt)*0.5 FROM ak000515_10) a LEFT JOIN
(SELECT gid,avg20=(first_volt+last_volt)*0.5 FROM ak000515_20) b ON (b.gid+1)*2-1=a.gid LEFT JOIN
(SELECT gid,avg50=(first_volt+last_volt)*0.5 FROM ak000515_50) c ON (c.gid+1)*5-1=a.gid
WHERE a.gid BETWEEN 324 AND 382
乱了,少了很多,而且不连续了,这是怎么回事?WHERE子句去掉就没问题,想快一些,所以先定a.gid的范围,再做LEFT JOIN,要怎么写啊?
...全文
1949 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jronald 2008-09-27
  • 打赏
  • 举报
回复
哎,原来是我没排序,加个ORDER BY a.gid就可以了,送分了。
jronald 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wufeng4552 的回复:]
条件不一样,导致的~~
[/Quote]

就是多了一个LEFT JOIN,WHERE一样啊,那记录应该是从324到382最,而且连续(表中这些记录都有存在的)。
水族杰纶 2008-09-27
  • 打赏
  • 举报
回复
条件不一样,导致的~~
zheninchangjiang 2008-09-27
  • 打赏
  • 举报
回复
the different between 'where' and 'and'

34,588

社区成员

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

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