4

我有一张像

city | pincode

abcd | 123456
xyz  | 326545
asd  | 625844
city | 999999

我希望结果与选定的pincode第一个排序

如果我选择pincode的是625844哪个城市,asd则必须先显示

期望的输出:

    city | pincode

    asd  | 625844  <<-- this is selected pincode must be first
    abcd | 123456
    xyz  | 326545
    city | 999999
4

6 回答 6

3
ORDER BY
        (pincode = @mypincode) DESC,
        pincode
于 2012-06-05T13:36:29.567 回答
3
select * from tbl 
order by (case when pincode = '625844' then 0 else 1 end), pincode

或者如果选择的密码作为参数@pincode 传入,这应该可以工作

select * from tbl 
order by (case when pincode = @pincode then 0 else 1 end), pincode
于 2012-06-05T13:37:51.597 回答
1
( select * from pincodes where pincode = ? )
union all
( select * from pincodes where pincode !=? order by pincode asc )

在查询中使用所需pincode的值作为搜索参数。

于 2012-06-05T13:36:19.163 回答
1
....
ORDER BY (case when pincode = @pincode then 0 else 1 end), pincode asc

http://dev.mysql.com/doc/refman/5.1/en/case-statement.html

于 2012-06-05T13:38:47.337 回答
0

为所有邮政编码分配权重,并首先为您想要的邮政编码分配最小权重。

于 2012-06-05T13:35:47.013 回答
0

您需要以下 order by 语句:

order by (case when pincode in (<selected pin codes>) then -1
               else pincode
           end)

我假设 pincode 是一个正数,并选择 -1 所以它首先出现。

于 2012-06-05T13:35:47.093 回答