按sql中的选定记录排序

时间:2012-06-05 13:33:39

标签: mysql sql

我有一张像

这样的表格
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

6 个答案:

答案 0 :(得分:3)

ORDER BY
        (pincode = @mypincode) DESC,
        pincode

答案 1 :(得分:3)

select * from tbl 
order by (case when pincode = '625844' then 0 else 1 end), pincode

或者如果所选的pincode作为参数@pincode传入,这应该可以正常工作

select * from tbl 
order by (case when pincode = @pincode then 0 else 1 end), pincode

答案 2 :(得分:1)

( select * from pincodes where pincode = ? )
union all
( select * from pincodes where pincode !=? order by pincode asc )

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

答案 3 :(得分: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

答案 4 :(得分:0)

为所有邮政编码指定权重,并将最小权重分配给您想要的邮政编码。

答案 5 :(得分:0)

您需要按以下顺序声明:

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

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