表外链的一个难题

HelloJimmy520 2011-05-07 03:13:58
现在我有两张表:表1
订单表有两条记录: orderInfo
orderNum Product
a 商品1
b 商品2

运送单有一条记录: ExpressOrder

ID orderList
1 a,b

orderNum product ID
a 商品1 1
b 商品2 1

selecta.ID,orderNum ,product,orderNum from expressORder a
right join orderInfo b
on b.OraderNum in (a.orderNum)

但是这个语句查询出来后没有运送单的ID也就是说查询出的效果为
orderNum product ID
a 商品1 null
b 商品2 null

我的sql语句有错么?我想应该是 on b.OraderNum in (a.orderNum) 语句的错误吧!@但是我不知道怎么改,求解惑

另外:如果我的orderList字段自由一个orderNum,就是正常的。
...全文
82 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶子 2011-05-07
  • 打赏
  • 举报
回复

--楼主可以直接运行
declare @orderInfo table (orderNum varchar(1),Product varchar(5))
insert into @orderInfo
select 'a','商品1' union all
select 'b','商品2'

declare @ExpressOrder table (ID int,orderList varchar(6))
insert into @ExpressOrder
select 1,'a,b'

select a.ID,orderNum ,product,orderNum from @ExpressOrder a
right join @orderInfo b
on charindex(','+b.orderNum+',',','+a.orderList+',')>0

/*
ID orderNum product orderNum
----------- -------- ------- --------
1 a 商品1 a
1 b 商品2 b
*/

HelloJimmy520 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 josy 的回复:]

try
SQL code
selecta.ID,orderNum ,product,orderNum from expressORder a
right join orderInfo b
on charindex(','+b.OraderNum+',',','+a.orderNum+',')>0
[/Quote]

大哥,还是不行啊。依然是空,效果和我的方法效果是一样的。 怎么回事?
Airch 2011-05-07
  • 打赏
  • 举报
回复
改用子查询吧,思路清晰一些,还有你写sql注意空格,别粘一起
百年树人 2011-05-07
  • 打赏
  • 举报
回复
try
selecta.ID,orderNum ,product,orderNum from expressORder a
right join orderInfo b
on charindex(','+b.OraderNum+',',','+a.orderNum+',')>0

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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