请教一个sql语句问题

wolai66 2012-08-22 02:03:21
为什么下面的语句,总是找不到记录? 到temptab1 和 package 表里面查,确实应该有记录可以找到。但是用下面的语句确找不到,为什么啊?


select (case when(select top 1 c.supply from material c where a.mtl=c.materialname)is null then '' else (select top 1 c.supply from material c where a.mtl=c.materialname) end) as SUPPLy,a.mtl,b.id from #temptab1 b left join package a on b.id=a.id   where b.id=a.id   and len(a.mtl)>0



上面语句,我用 #temptab1 b left join package a,然后在select 中又用到a.mtl,这样是不是不对啊?我其实是想用left join后整表里面的mtl,应该怎么写呢?谢谢
...全文
105 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wolai66 2012-08-27
  • 打赏
  • 举报
回复
顶。有谁能帮忙的,谢谢了。
wolai66 2012-08-23
  • 打赏
  • 举报
回复
还是我原来的语句,在我本机上可以用,上传到sql服务器,就查询不到记录了,数据库都是一样的阿。

如果把null 去掉,换成len(mtl)>=0,倒是能查出来,但为什么在本地就不需要改呢?谁能帮帮我啊。。。

SQL code

select (case when(select top 1 c.supply from material c where a.mtl=c.materialname)is null then '' else (se……
[/Quote]
  • 打赏
  • 举报
回复

-->try
select SUPPLy=(select top 1 isnull(c.supply,'') from material c where a.mtl=c.materialname),a.mtl,b.id
from #temptab1 b
inner join package a
on b.id=a.id and len(a.mtl)>0
Net攻城狮 2012-08-22
  • 打赏
  • 举报
回复
(select top 1 c.supply from material c where a.mtl=c.materialname) 这个如果查不到数据 那么他是不存在的 也不是null 也不是 空

(select top 1 c.supply from material c where a.mtl=c.materialname)


left join package a on b.id=a.id
where b.id=a.id
where 后面的不需要。。这样会因为关联不到 package 数据 而不显示

34,590

社区成员

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

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