sql server中查询出14条数据,通过hibernate的queryByNativeSql()方法查询返回的list返回的1000多条? 10

selectcast(b.stcdasvarchar(8))stcd,cast(b.stnmasvarchar(30))stnm,rs.avz,rs.avq,rs.wrn... select cast(b.stcd as varchar(8)) stcd,
cast(b.stnm as varchar(30)) stnm,
rs.avz,
rs.avq,
rs.wrnf,
rs.idtm,
rs.sttdrcd
from hw.st_stbprp_b b
left join (select (case
when r.stcd is null then
s.stcd
else
r.stcd
end) as stcd,
(case
when r.idtm is null then
s.idtm
else
r.idtm
end) as idtm,
(case
when r.sttdrcd is null then
s.sttdrcd
else
r.sttdrcd
end) as sttdrcd,
r.avz,
r.avq,
s.wrnf
from hw.st_rvav_r r
full join hw.st_sedrf_r s
on r.stcd = s.stcd
and r.idtm = s.idtm
and r.sttdrcd = s.sttdrcd) rs
on b.stcd = rs.stcd
where 1 = 1 and rs.sttdrcd = 1
and b.stcd in('10900300')
and ((rs.idtm >= to_date('2010/05/01 00:00:00','yyyy/mm/dd hh24:mi:ss') and rs.idtm <= to_date('2012/11/01 23:59:59','yyyy/mm/dd hh24:mi:ss')))
通过断点,hibernate生成的sql在sqlserver中查询也是14条。为什么返回的不对呢。
展开
 我来答
奔放又欢快的宝贝
2014-04-16
知道答主
回答量:11
采纳率:0%
帮助的人:2.6万
展开全部
因为left join是返回左边的表的记录条数,所以,你的这个脚本要对右表做isnull判断
where 后面的 rs.sttdrcd = 1 改为isnull(rs.sttdrcd,0) = 1
isnull(b.stcd,'') in('10900300') 这样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yjtjhso
2014-04-14 · TA获得超过234个赞
知道答主
回答量:120
采纳率:50%
帮助的人:65.6万
展开全部
hibernate的查询条件顺序和SQL的顺序一样吗,SQL查询解析是从后向前的,顺序不一样结果也可能不一样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
SQL的艺术
2014-04-14 · SQL写多了就会在追求极致
SQL的艺术
采纳数:2040 获赞数:3322

向TA提问 私信TA
展开全部
肯定是你程序里,拼接出来的SQL字符串和实际执行的这个字符串不一样。

我能帮你找到问题,私信我,留下Q。
更多追问追答
追问
这个sql就是拼接后复制到sqlserver中执行的。一样的。
追答
未必吧,数据库是忠实的按照你的SQL语句来执行的
不可能两个一样的语句得出来的结果不一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式