LEFT JOIN后怎么用Like条件查询

qq11002608 2021-05-09 02:14:28
请教一下大家我这样好像进入了死循环,

表1列名:编号数组(nvarchar(MAX))
表2列名:编号(nvarchar(50))


SELECT T1.*,T2.* FROM [表1] as T1 LEFT JOIN [表2] as T2 ON T1.[编号数组] like '%'+T2.[编号]+'%'


另外我想问问这样设计表1与表2关联在一起有问题吗?或影响查询效率什么的吗?
...全文
3065 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_37852764 2021-06-28
  • 打赏
  • 举报
回复

可以关联,你要是不放心可以用concat('%',T2.[编号],'%')

但你的写法应该也是没问题的,至少我运行没有死循环,就是关联没有问题,个人认为死循环可能跟数据内容有关,你的编号数组与编号是否重复的有太多?

select t1.*,t2.* from (
SELECT 'a,1,2,3,a' as 编号数量, 't1' as 数组表数据
union all
SELECT 'a456a' as 编号数量, 't1' as 数组表数据
union all
SELECT 'a456a' as 编号数量, 't1' as 数组表数据
) t1 left join (
SELECT '1' as 编号, 't2' as 编号数据
union all
SELECT '2' as 编号, 't2' as 编号数据
union all
SELECT '3' as 编号, 't2' as 编号数据
union all
SELECT '4' as 编号, 't2' as 编号数据
union all
SELECT '5' as 编号, 't2' as 编号数据
union all
SELECT '6' as 编号, 't2' as 编号数据
union all
SELECT '1,2' as 编号, 't2' as 编号数据
union all
SELECT '45' as 编号, 't2' as 编号数据
) t2 on t1.编号数量 like '%'+t2.编号+'%'

你可以自己试一试,在sqlserver 2016 上是没有问题

数据工具人 2021-06-23
  • 打赏
  • 举报
回复

第一个加号修改成and 第二个加号改成like,你这+号在条件后面不是拼接功能

锟斤拷锟斤拷 2021-05-10
  • 打赏
  • 举报
回复
引用 1 楼 队长不会编程 的回复:
你那里on 后面不是应该接他们的共同列吗怎么直接like了
不能用like作为连接条件吗?我感觉好像可以啊
morliz子轩 2021-05-09
  • 打赏
  • 举报
回复
引用 4 楼 qq11002608 的回复:
[quote=引用 3 楼 morliz子轩 的回复:]select a.*,b.* from a left join b on a.id = b.id where a.id like ('%xxxx%') 这样才对。条件不能放在表连接关系的关键字内。
没有相同的ID呀。。[/quote] 那A、B表间关系 ,是怎么个关系,把数据源发出来,我们看看。
qq11002608 2021-05-09
  • 打赏
  • 举报
回复
引用 3 楼 morliz子轩 的回复:
select a.*,b.* from a left join b on a.id = b.id where a.id like ('%xxxx%') 这样才对。条件不能放在表连接关系的关键字内。
没有相同的ID呀。。
morliz子轩 2021-05-09
  • 打赏
  • 举报
回复
select a.*,b.* from a left join b on a.id = b.id where a.id like ('%xxxx%') 这样才对。条件不能放在表连接关系的关键字内。
qq11002608 2021-05-09
  • 打赏
  • 举报
回复
引用 1 楼 队长不会编程 的回复:
你那里on 后面不是应该接他们的共同列吗怎么直接like了
就是没有共同列呀 咋整呢

34,575

社区成员

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

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