比如我有一个城市数据库 cities_cities
cityId cityname province
1 北京 北京
2 上海 上海
3 石家庄 河北
4 邢台 河北
5 邯郸 河北
6 保定 河北
7 唐山 河北
我要从province为河北的里面选第三个,也就是“ 邯郸 ”,应该怎么写查询语句?
SELECT TOP 3 FROM cities_cities WHERE Province='河北' 好像不行,会有三个结果,我只要一个 邯郸 。
------解决思路----------------------
create table #cities_cities
(
cityId int,
cityname varchar(20),
province varchar(20)
)
go
insert into #cities_cities
select 1,'北京','北京' union all
select 2,'上海','上海' union all
select 3,'石家庄','河北' union all
select 4,'邢台','河北' union all
select 5,'邯郸','河北' union all
select 6,'保定','河北' union all
select 7,'唐山','河北'
;WITH CTE AS
(
SELECT ROW_NUMBER() OVER(PARTITION BY province ORDER BY cityId) AS ROW,*
FROM #cities_cities
)
SELECT * FROM CTE WHERE province='河北' AND ROW=3
ROW cityId cityname province
-------------------- ----------- -------------------- --------------------
3 5 邯郸 河北
(1 行受影响)
------解决思路----------------------
按照province rownumber之后取出等于3的就可以了