注册 登录
编程论坛 SQL Server论坛

如何将左边三位一样数据截取出来?

山金 发布于 2015-03-21 12:18, 1217 次点击
假设zd_bm(部门)表中有bmm(部门号)字段,内容为:
bmm
101
102
10201
10202
10203
103
10301
10302
如何将表中前3位有重复的记录取出,即要返回:
102
10201
10202
10203
103
10301
10302

5 回复
#2
林月儿2015-03-24 12:11
SELECT bmm FROM zd_bm WHERE left(bmm,3) IN
(SELECT left(bmm,3) FROM zd_bm GROUP BY left(bmm,3) HAVING COUNT(*)>1)

[ 本帖最后由 林月儿 于 2015-3-24 12:15 编辑 ]
#3
山金2015-03-24 21:57
回复 2楼 林月儿
谢谢,还有个问题请教,子查询里group by后的left(bmh,3)若改成bmh,这样光运行子查询就没有任何结果,请问这是为什么?
#4
林月儿2015-03-25 12:59
回复 3楼 山金
分组依据是前3个字符,去掉就成了整体为依据。也就是说呀,你的假设造成子句分组依据不合理(不存在)。这样说理解吗?
#5
山金2015-03-25 21:32
回复 4楼 林月儿
懂了谢谢。
#6
林月儿2015-03-25 22:19
回复 5楼 山金
不用谢啦,相互学习哟
1