SQL语句不熟,希望得到大家的指点

popo1 2004-09-14 07:11:26
表 stationinfo 的字段:
city nvarchar(20)
town nvarchar(20)

数据:

city town city town
沈阳 辽中 大连 长海
沈阳 康平 大连 大连
沈阳 沈阳 大连 瓦房店
沈阳 新民 大连 普兰店

说明: 沈阳 沈阳
大连 大连
--- 是市区
--- 其他的都是其下属的县

问题是怎么在显示时可以让市区出现在前面,后面的县无所谓 即:

沈阳 沈阳 大连 大连
沈阳 辽中 大连 长海
沈阳 康平 大连 瓦房店
沈阳 新民 大连 普兰店
我的想法是新建一张临时表,比原表多一个 OrderID字段
然后用游标判断每一条记录的 city 和 town 看二者是否相等,如果相等则更新 OrderID=1 这样就可以根据 city 字段 和 OrderID 字段来排序得到想要的结果了,但游标我接触得不多,做出来并没有实现,希望能得到大家的指点.

...全文
92 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
whw502 2004-09-15
  • 打赏
  • 举报
回复
to:hdhai9451(※★山,快馬加鞭未下鞍...☆※)
请教:
order by case when city=town then '0' else town end

什么意思啊!
学习中…………
yesterday2000 2004-09-14
  • 打赏
  • 举报
回复
回复人: hdhai9451(※★山,快馬加鞭未下鞍...☆※) ( ) 信誉:100
的强
Andy__Huang 2004-09-14
  • 打赏
  • 举报
回复
上面的結果是
city town
---------------------
大連 大連
大連 瓦房店
大連 長海
大連 普蘭店
Andy__Huang 2004-09-14
  • 打赏
  • 举报
回复
沒有必要用臨時表的
Andy__Huang 2004-09-14
  • 打赏
  • 举报
回复
create table stationinfo(city nvarchar(20), town nvarchar(20))
Insert into stationinfo
select '大連','長海'
union all select '大連','大連'
union all select '大連','瓦房店'
union all select '大連','普蘭店'

select * from stationinfo

select * from stationinfo order by case when city=town then '0' else town end
yesterday2000 2004-09-14
  • 打赏
  • 举报
回复
select case when city=town then 0 else 1 end as orderid,
* into #a from tb

select city,town from #a
order by orderid
fengyinglois 2004-09-14
  • 打赏
  • 举报
回复
select * from #liping where city=town union
select * from #liping where city<>town
Andy__Huang 2004-09-14
  • 打赏
  • 举报
回复
select * from stationinfo order by case when city=town then '0' else town end
yesterday2000 2004-09-14
  • 打赏
  • 举报
回复

select * from tb where city=town
不就可以查出相同的了吗?
friendliu 2004-09-14
  • 打赏
  • 举报
回复
update table set OrderID=1 where city =town

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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