比较难写的SQL查询语句,请帮帮忙!

lgming21 2009-11-13 05:08:44
select * from 表1 iner join 表2 on 表1.bh in(表2.bh)

表1.bh内容是一个字符串 如:AA
表2.bh内容是用逗号分开的字符串 如:AA,BB,CC

要求如果表1.BH在表2.bh中就进行连接。
这个SQL语句应该怎样写,高手们帮帮
...全文
311 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgming21 2009-12-02
  • 打赏
  • 举报
回复
高手呢?
lgming21 2009-11-17
  • 打赏
  • 举报
回复
有人知道怎样写吗?
lgming21 2009-11-14
  • 打赏
  • 举报
回复
表1:数据结构
BH MC
AA1235 MC1
BB1111X MC2
CC2222RX MC3
CC3333B MC4
PP5555BR MC5

表2:数据结构
BH BHLB
AA1235 X,RX,B,BR
BB1111 X,RX,
CC2222 B,BR,RX
CC3333 X,RX,B,BR
PP5555 B,BR,X

怎样才能使表1和表2连接呢?条件是表1.BH=(表2.bh+表2.BHLB的任一个逗号分隔符为组合的字符)
这样的SQL语句怎样写呢?
bancxc 2009-11-13
  • 打赏
  • 举报
回复
没看明白
qqqwwwqw 2009-11-13
  • 打赏
  • 举报
回复
select m.* , n.* from 表1 m , 表2 n where charindex(',' + m.bh + ',', ',' + n.bh + ',') > 0
yanglinqiang 2009-11-13
  • 打赏
  • 举报
回复
楼主:表二的数据量大吗?
如果不大可以先对表二进行处理
lgming21 2009-11-13
  • 打赏
  • 举报
回复
楼上的运行时还是很慢
chkaka 2009-11-13
  • 打赏
  • 举报
回复
SQL codeselect*from 表1join 表2on 表2.bh like '%表1.bh%'
lgming21 2009-11-13
  • 打赏
  • 举报
回复
有没高手遇到过这种问题????
Rotel-刘志东 2009-11-13
  • 打赏
  • 举报
回复
select * from 表1 a , 表2 b where charindex(',' + a.bh + ',', ',' + b.bh + ',') > 0
SQL77 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lgming21 的回复:]
都试了,数据不到二万条运行都需要4,5秒,如果数据量大的时候就更慢了,还有没有更好的办法
[/Quote]
如果你要拆分再进行连接查询,估计也好不了哪去
NDDavid 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sql77 的回复:]
SQL codeselect*from 表1join 表2onCHARINDEX(','+LTRIM(表1.bh)+',',','+表2.bh+',')>0
[/Quote]UP
lgming21 2009-11-13
  • 打赏
  • 举报
回复
都试了,数据不到二万条运行都需要4,5秒,如果数据量大的时候就更慢了,还有没有更好的办法
dawugui 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lgming21 的回复:]
用charindex好慢哦。在SQL里运行有时候还超时呢。
[/Quote]
用like更慢.

你的需求和设计决定了你的速度.
SQL77 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lgming21 的回复:]
用charindex好慢哦。在SQL里运行有时候还超时呢。
[/Quote]
那你想怎么样呀,呵呵
ws_hgo 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lgming21 的回复:]
用charindex好慢,有时候还会运行超时
[/Quote]
charindex不慢啊
lgming21 2009-11-13
  • 打赏
  • 举报
回复
用charindex好慢,有时候还会运行超时
lgming21 2009-11-13
  • 打赏
  • 举报
回复
用charindex好慢哦。在SQL里运行有时候还超时呢。
--小F-- 2009-11-13
  • 打赏
  • 举报
回复
select * from 表1 a,表2 b where charindex(','+a.bh+',',','+b.bh+',')>0
dawugui 2009-11-13
  • 打赏
  • 举报
回复
select m.* , n.* from 表1 m , 表2 n where charindex(',' + m.bh + ',', ',' + n.bh + ',') > 0

select m.* , n.* from 表1 m , 表2 n where ',' + n.bh + ',' like '%,' + m.bh + ',%'
加载更多回复(4)

34,587

社区成员

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

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