数据库查询问题(改错)

心泉梦帅 2012-11-08 10:23:18

表A
ID nameT
111 aaa;bbb;ccc
表B
nameid name
aaa 名1
bbb 名2
ccc 名3
我想等到的结果是 名1,名2,名3

那该怎么写
我是这样写的 但是错误
select b.name from
(select * from 表A) as a left join
(select * from 表B) as b on a.nameT = b.nameid
where a.id='111'
...全文
195 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kxloveh 2012-11-08
  • 打赏
  • 举报
回复
引用 9 楼 hu1990728 的回复:
引用 8 楼 kxLoveH 的回复: 想不通,怎么会有这种结构的表呢,如果表A的内容是: 表A ID nameT 111 aaaa;bbb;ccc 表B不变,那么3楼的方案就不行了啊;再者,默认用分号分隔,好吧,那么nameid中就要验证分号了哦,是不是会带来很多麻烦啊,总之从这个表的设计,我感觉楼主是想减少冗余? 冗余 和 繁琐的程序控制,楼主你抉择一下吧,不过3……
select B.name from B where  
instr(B.nameid+';',(select A.nameT+';' from A where A.Id="111"))>0
看看行不行,还是4楼的方法,注意一点:你的A的ID字段是什么类型,int还是字符串。谢4楼吧
心泉梦帅 2012-11-08
  • 打赏
  • 举报
回复
引用 8 楼 kxLoveH 的回复:
想不通,怎么会有这种结构的表呢,如果表A的内容是: 表A ID nameT 111 aaaa;bbb;ccc 表B不变,那么3楼的方案就不行了啊;再者,默认用分号分隔,好吧,那么nameid中就要验证分号了哦,是不是会带来很多麻烦啊,总之从这个表的设计,我感觉楼主是想减少冗余? 冗余 和 繁琐的程序控制,楼主你抉择一下吧,不过3,4楼的都很不错……
你说的很对,我用3,4楼的方法但还是错的唉
kxloveh 2012-11-08
  • 打赏
  • 举报
回复
想不通,怎么会有这种结构的表呢,如果表A的内容是: 表A ID nameT 111 aaaa;bbb;ccc 表B不变,那么3楼的方案就不行了啊;再者,默认用分号分隔,好吧,那么nameid中就要验证分号了哦,是不是会带来很多麻烦啊,总之从这个表的设计,我感觉楼主是想减少冗余? 冗余 和 繁琐的程序控制,楼主你抉择一下吧,不过3,4楼的都很不错,顶!
austin_luobj 2012-11-08
  • 打赏
  • 举报
回复
mysql也用INSTR
austin_luobj 2012-11-08
  • 打赏
  • 举报
回复
如果lz用的是sqlserver数据库的话3楼正解,如果是oracle的话CHARINDEX改INSTR。
心泉梦帅 2012-11-08
  • 打赏
  • 举报
回复
引用 4 楼 Return_false 的回复:
SQL code1select B.name from B where charindex(B.nameid+';',(select A.nameT+';' from A where A.Id=111))>0
非常感谢您 不过Mysql里面没有charindex
  • 打赏
  • 举报
回复
select B.name from B where  charindex(B.nameid+';',(select A.nameT+';' from A where A.Id=111))>0
天下如山 2012-11-08
  • 打赏
  • 举报
回复

create table A
(
  ID int,
  nameT varchar(50)
)
create table B
(
  nameid varchar(10),
  name varchar(20)
)
insert into A
select 111,'aaa;bbb;ccc'
insert into B
select 'aaa','名1' union 
select 'bbb','名2' union
select 'ccc','名3'

update A set nameT='aaa;bbb'

select b.name  from 
(select * from A) as a left join
(select * from B) as b on charindex(b.nameid,a.nameT)>0
where a.id='111'

name                 
-------------------- 
名1
名2
stiff_neck 2012-11-08
  • 打赏
  • 举报
回复
as去掉。。
心泉梦帅 2012-11-08
  • 打赏
  • 举报
回复
帮忙看下~求大侠
心泉梦帅 2012-11-08
  • 打赏
  • 举报
回复
最后还是选择了将数据库数据全部放入内存然后一个一个匹配,还好数据不多唉。不过还是谢谢大家了

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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