英雄,帮忙啊!!!!!!!1急。。。。。。。。。。。。

CNBX 2004-05-07 04:23:25
数据表里有数据
c2_id(自动) c2_name(文本字段)

1 电视台、广播电台
2 电话、传真机
3 行业专用机械及设备/渔业设备及用具
4 行业专用机械及设备/ 粮油加工机械
5 五金工具/刀具、夹具
6 通用零部件/紧固件、密封件、弹簧
7 五金工具/螺丝刀
8 五金工具/匕首
9 通用零部件/手枪配件
10 通用零部件/把手

先查询c2_name 字段里包含有“/”符号的数据并循环读出。但如果单纯这样读出的话,就会把所有包含“/”的那些数据都读出来,
现在想要的效果是各取包含"/"的一条记录,比如就取出“通用零部件”,“五金工具”,“行业专用机械及设备”(去掉“/”后的字符),各1条记录并循环读出来
我用这样这样不行的,
Select distinct c2_name,c2_idFrom all_class2 where c1_id="&rs("c1_id")&" and c2_name like '%/%'
...全文
12 8 点赞 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
CNBX 2004-05-07
哈哈,可以了。,谢谢各位帮忙,。谢谢!!!!
  • 打赏
  • 举报
回复
CNBX 2004-05-07
不好意思各位,我还是没弄明白,我是用ASP,具体该怎么弄?
  • 打赏
  • 举报
回复
8992026 2004-05-07
select min(c2_id) as c2_id,c2_name
from (
select c2_id,c2_name=left(c2_name,charindex('/',c2_name)-1)
from all_class2
where c2_name like '%/%'
) as x
group by c2_name
  • 打赏
  • 举报
回复
zjcxc 元老 2004-05-07
--测试

--测试数据
create table all_class2(c2_id int identity(1,1),c2_name varchar(50))
insert all_class2 select '电视台、广播电台'
union all select '电话、传真机'
union all select '行业专用机械及设备/渔业设备及用具'
union all select '行业专用机械及设备/ 粮油加工机械'
union all select '五金工具/刀具、夹具'
union all select '通用零部件/紧固件、密封件、弹簧'
union all select '五金工具/螺丝刀'
union all select '五金工具/匕首'
union all select '通用零部件/手枪配件'
union all select '通用零部件/把手'
go

--查询
select a.c2_id,c2_name=left(c2_name,charindex('/',c2_name)-1)
from all_class2 a join(
select c2_id=min(c2_id)
from all_class2
where c2_name like '%/%'
group by left(c2_name,charindex('/',c2_name))
)b on a.c2_id=b.c2_id
go

--删除测试
drop table all_class2

/*--测试结果

c2_id c2_name
----------- --------------------------------------------------
3 行业专用机械及设备
5 五金工具
6 通用零部件

(所影响的行数为 3 行)

--*/
  • 打赏
  • 举报
回复
zjcxc 元老 2004-05-07
--按上面的结果要求就是:

select a.c2_id,c2_name=left(c2_name,charindex('/',c2_name)-1)
from all_class2 a join(
select c2_id=min(c2_id)
from all_class2
where c2_name like '%/%'
group by left(c2_name,charindex('/',c2_name))
)b on a.c2_id=b.c2_id
  • 打赏
  • 举报
回复
CNBX 2004-05-07
Select c2_name,c2_idFrom all_class2 where c2_name like '%/%'
例如语句是这样。得出表里包含“/”的数据出来(do while循环出来)。
结果是:
c2_id(自动) c2_name(文本字段)
3 行业专用机械及设备/渔业设备及用具
4 行业专用机械及设备/ 粮油加工机械
5 五金工具/刀具、夹具
6 通用零部件/紧固件、密封件、弹簧
7 五金工具/螺丝刀
8 五金工具/匕首
9 通用零部件/手枪配件
10 通用零部件/把手

在把结果取“/”前面字符:
hhhh=Left(c2_name,InStr(c2_name,"/")-1)

但循环结果是:
c2_id(自动) c2_name(文本字段)
3 行业专用机械及设备
4 行业专用机械及设备
5 五金工具
6 通用零部件
7 五金工具
8 五金工具
9 通用零部件
10 通用零部件
可是我只不要重复的。。。我要的循环结果是:

3 行业专用机械及设备
5 五金工具
6 通用零部件

怎么弄啊???

  • 打赏
  • 举报
回复
zjcxc 元老 2004-05-07

select a.*
from all_class2 a join(
select c2_id=min(c2_id)
from all_class2
where c2_name like '%/%'
group by left(c2_name,charindex('/',c2_name))
)b on a.c2_id=b.c2_id
  • 打赏
  • 举报
回复
victorycyz 2004-05-07

你写的语句中的字段,与你上面说明的字段不一样。不明白是怎么回事。并且,好象是一个string字串的赋值语句的一部分,不太好看。

你可以先取出“/”前面的内容,再group by 此取出的内容就行。


  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server
加入

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2004-05-07 04:23
社区公告
暂无公告