sql 分类查找

[复制链接]
查看11 | 回复4 | 2009-8-20 23:29:11 | 显示全部楼层 |阅读模式
select * from A where A.city='北京'unionselect * from A where A.city='上海'union select * from A where A.city='广州'unionselect * from A where A.city NOT IN ('北京','上海','广州')
回复

使用道具 举报

千问 | 2009-8-20 23:29:11 | 显示全部楼层
SELECT id,city FROM a ORDER BY city;试一下,不太确定。
回复

使用道具 举报

千问 | 2009-8-20 23:29:11 | 显示全部楼层
select id,city from(selectid,city,(case city when '北京' then 1, when '上海'then 2, when ‘广州’then 3,else 4 end) ord from a) as a1order by ord思路就是跟椐 city列的值新增一个临时字段用于排序,因为在扫描数据的同时产生新列,所以不影响语句执行的效率。具体那个case 的写法可能有错,你自己测试一下。
回复

使用道具 举报

千问 | 2009-8-20 23:29:11 | 显示全部楼层
谢谢楼主送分SELECT ID, CITYFROM AWHERE CITY = '北京'ORCITY = '上海'ORCITY = '广州'ORDER BY CASE CITY WHEN '北京' THEN 1 WHEN '上海' THEN 2 WHEN '广州' THEN 3 END
回复

使用道具 举报

千问 | 2009-8-20 23:29:11 | 显示全部楼层
select Id,city from
A
order by(case city when '北京' then 1
when '上海' then 2
when '广州' then 3else 4 end),id 5楼写的可行:可以用patindex和charindex函数:select Id,city from
A order by charindex(city,'北京上海广州成都天津厦门'),idselect Id,city from A order by patindex('%'+city+'%','北京上海广州成都天津厦门'),id3个都可以,不过用函数,要把城市列举全,所以感觉要是很多的话,不方便.分组取出来再处理不行吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行