求sql

caoyang0299 2016-07-29 11:47:05
表t1,表t2,都有c列
如果t2,c列包含t1,c列的值,就把这列取出来
sql应该怎么写。

select * from t2 where exists (select 1 from t1 where t2.c like '%'+t1.c+'%')
我这么写为啥只能得到第一条数据

求指点
...全文
166 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2016-07-29
  • 打赏
  • 举报
回复

create table t1(c varchar(10))
create table t2(c varchar(10))

insert into t1(c)
 select 'aa' union all
 select 'bb' union all
 select 'cc' union all
 select 'ddd'

insert into t2(c)
 select 'waa' union all
 select 'aaxx' union all
 select 'ccf' union all
 select '1bb' union all
 select 'ddd' union all
 select 'dd' union all
 select 'ee'


select t2.*
 from t2
 inner join t1 on t2.c like '%'+t1.c+'%'

/*
c
----------
waa
aaxx
1bb
ccf
ddd

(5 row(s) affected)
*/
caoyang0299 2016-07-29
  • 打赏
  • 举报
回复
引用 1 楼 ap0405140 的回复:

select t2.*
 from t2
 inner join t1 on t2.c like '%'+t1.c+'%'
同样得问题 同样的结果, 只查到了第一条数据, t1,c列 aa bb cc ddd t2,c列 waa aaxx ccf 1bb ddd dd ee 就查出来waa 这条记录,别得都没有,啥问题呢
唐诗三百首 2016-07-29
  • 打赏
  • 举报
回复

select t2.*
 from t2
 inner join t1 on t2.c like '%'+t1.c+'%'
唐诗三百首 2016-07-29
  • 打赏
  • 举报
回复
建议LZ学习一下SQL基础语法, 重点是多实战喔.
唐诗三百首 2016-07-29
  • 打赏
  • 举报
回复
引用 6 楼 caoyang0299 的回复:
弄成了一个表 c0 c1 waa aa aaxx aa select * from tmp0 where c0 like '%'+c1+'%' 结果就是一条数据 waa aa 晕啊
因为只用到一个表, 没有产生笛卡尔积,直接走过滤条件: c0 like '%'+c1+'%' 所以结果只有一行.
唐诗三百首 2016-07-29
  • 打赏
  • 举报
回复
引用 5 楼 caoyang0299 的回复:
哪位帮分析分析,到底问题出在哪
4楼的运行结果是符合逻辑的, t1和t2先产生笛卡尔积,然后再过滤: t2.c like '%'+t1.c+'%'
caoyang0299 2016-07-29
  • 打赏
  • 举报
回复
弄成了一个表 c0 c1 waa aa aaxx aa ccf aa 1bb aa ddd aa dd aa ee aa waa bb aaxx bb ccf bb 1bb bb ddd bb dd bb ee bb waa cc aaxx cc ccf cc 1bb cc ddd cc dd cc ee cc waa Publisher aaxx Publisher ccf Publisher 1bb Publisher ddd Publisher dd Publisher ee Publisher select * from tmp0 where c0 like '%'+c1+'%' 结果就是一条数据 waa aa 晕啊
caoyang0299 2016-07-29
  • 打赏
  • 举报
回复
哪位帮分析分析,到底问题出在哪
caoyang0299 2016-07-29
  • 打赏
  • 举报
回复
晕啦,我这怎么还是不对,跟数据有关? t1 1 11 aa 2 12 bb 3 13 cc NULL NULL aa NULL NULL ddd NULL NULL Publisher NULL NULL ddd t2 4 41 waa 1 5 42 aaxx 2 6 43 ccf 3 1 21 1bb 4 7 12 ddd 5 1 11 dd 6 1 12 ee 7 select t2.* from t2 inner join t1 on t2.c like '%'+t1.c+'%' 执行结果 4 41 waa 1 4 41 waa 1 5 42 aaxx 2 7 12 ddd 5 7 12 ddd 5

34,590

社区成员

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

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