4

私は次のようなテーブルを持っています

city | pincode

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

pincodeそして、最初に選択したもので結果をソートしたい

どの都市かpincodeを選択した場合、最初に表示する必要があります625844asd

望ましい出力:

    city | pincode

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

6 に答える 6

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 に答える
3
ORDER BY
        (pincode = @mypincode) DESC,
        pincode
于 2012-06-05T13:36:29.567 に答える
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 に答える
1
( select * from pincodes where pincode = ? )
union all
( select * from pincodes where pincode !=? order by pincode asc )

必要なpincode値をクエリの検索パラメーターとして使用します。

于 2012-06-05T13:36:19.163 に答える
0

すべての郵便番号に重みを割り当て、最初に必要な郵便番号に最小重量を割り当てます。

于 2012-06-05T13:35:47.013 に答える
0

次の order by ステートメントが必要です。

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

私は、ピンコードが正の数であると想定しており、-1 を選択して最初に来るようにしています。

于 2012-06-05T13:35:47.093 に答える