高手帮我看看这样的查询语句有没有问题~~~~谢拉

架构之路 2005-12-30 05:29:19
1.select RS.dwbm,count(*) rs, sum(GZ.YFX) YFX,sum(GZ.B013) B013,sum(GZ.B015) B015,
2.sum(GZ.B014) B014,B003,sum(GZ.KFX) KFX,sum(GZ.SFX) SFX into tmpDkjTjxx
3.from tmpWxRscx rs,tbldwxx dw,tmpWxGzcx gz
4.where rs.rybm=gz.rybm and gz.rq=rs.rq and gz.rq between '2005-12' and '2005-12' and 5.dw.dwbm=rs.dwbm and rs.dwbm=gz.dwbm and rs.czbj like '00_0%' and
6.RS.DWBM= '001001' or RS.DWBM= '001002' or RS.DWBM= '001003'
7.and dw.dwmc in (select distinct dwmc from dwqx where jsmc='sa') and dw.TFBZ='0' and 8.gz.gzxz='0'
9.group by RS.dwbm order by RS.dwbm

请看第 6行条件代码,or放在这里是否合适,潜在危险是什么?
这是我从储存过程中拿出来的 第6行的代码 是一个变量带入的条件,每次到这里都会出问题,可是我又看不出来到底出了什么问题,帮帮忙啊~~~~~
...全文
100 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dh0498 2006-06-03
  • 打赏
  • 举报
回复
加上括号
架构之路 2005-12-31
  • 打赏
  • 举报
回复
第 5行没有问题,的确的是这个要求。
看来楼上说的有点道理,我试试
拓狼 2005-12-30
  • 打赏
  • 举报
回复
sql语句中计算顺序是先计算and后计算or,所以你这种写法会先处理rs.rybm=gz.rybm and gz.rq=rs.rq and gz.rq between '2005-12' and '2005-12' and 5.dw.dwbm=rs.dwbm and rs.dwbm=gz.dwbm and rs.czbj like '00_0%' and
6.RS.DWBM= '001001' ,后处理RS.DWBM= '001003'
7.and dw.dwmc in (select distinct dwmc from dwqx where jsmc='sa') and dw.TFBZ='0' and 8.gz.gzxz='0' ,然后再与条件or RS.DWBM= '001002' or 进行or运算,楼主是希望RS.DWBM= '001001' or RS.DWBM= '001002' or RS.DWBM= '001003' 作为一个条件去运算吧,所以这个条件要加上括号,即第6行要加上括号
pbsql 2005-12-30
  • 打赏
  • 举报
回复
第6行没问题,可能第5行有问题:
rs.czbj like '00_0%'--这个表示以00开头且第4个字符是0的记录(_是通配符)
rs.czbj like '00[_]0%'--这个才表示以00_0开头的记录
panjinfu80 2005-12-30
  • 打赏
  • 举报
回复
有可能是LIKE的问题。

34,590

社区成员

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

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