2016-07-05 10 views
1

MySQLクエリの結果をwhere句にリストされているように並べ替えて表示します。現在、結果は私のリストの数字の順に並べられていません。ここで結果をリストアイテムで並べ替え

私の文は、非順序で複数の値で注文したいので、それは、彼らがために、数値的にはないも、彼らはVARCHARとして順に正しく注文されるだろうです

SELECT * 
FROM subscription 
WHERE phone in 
(
    '255769016082', 
    '255742594724', 
    '255753299742', 
    '255759502732', 
    '255753839708' 
) 
+0

考えてみましょうか?あなたの選択の中で注文ごとの注文はどこですか?どのようにそれらを注文したいですか?いくつかの情報を追加してください。 –

+0

こんにちはマキシム、私は私の質問の正しいステートメントを知らないので、私は注文を入れていません。どのように私はOrder(Column_Name)DescまたはAscを試して、それは正常に実行されました。しかし、私の懸念事項は、SQL文でリストされた順序で結果を整理することです。 – gngadada

答えて

3

ですそれらに数値を適用する必要があります。ここでそれを行う方法があります。

if object_id('tempdb..#temp') is not null drop table #temp 

create table #temp (phone varchar(20)) 

insert into #temp (phone) values 
('255769016082'), 
('255742594724'), 
('255753299742'), 
('255759502732'), 
('255753839708'), 
('257538312333') 

SELECT * 
FROM #temp 
WHERE phone in 
(
    '255769016082', 
    '255742594724', 
    '255753299742', 
    '255759502732', 
    '255753839708' 
) 
ORDER BY 
CASE 
    WHEN phone = '255769016082' THEN 1 
    WHEN phone = '255742594724' THEN 2 
    WHEN phone = '255753299742' THEN 3 
    WHEN phone = '255759502732' THEN 4 
    WHEN phone = '255753839708' THEN 5 
END 

今後、数値以外のフィールドを並べ替える場合、SQL Serverがこれをどのように処理するかを理解する必要があります。

だからこの

if object_id('tempdb..#char') is not null drop table #char 

create table #char(stringField varchar(6)) 

insert into #char (stringField) values 
('a'), 
('A'), 
('b'), 
('B'), 
('AB'), 
('aB'), 
('ab'), 
('Ab'), 
('ba'), 
('Ba'), 
('bA'), 
('BA') 

select * from #char order by stringField asc 
select * from #char order by stringField desc 
関連する問題