2016-07-05 5 views
1

Ich möchte das Ergebnis meiner MySQL-Abfrage anzeigen, indem Sie sie so anordnen, wie sie in der where-Klausel aufgeführt sind. Derzeit sind die Ergebnisse nicht in der Reihenfolge der Nummern in meiner Liste aufgeführt.Wählen Sie die Ergebnisse aus und sortieren Sie sie in Listenelementen.

Hier meine Aussage ist

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

So? Wo ist die Reihenfolge nach Aussage in Ihrer Auswahl? Wie möchten Sie sie bestellen? Fügen Sie bitte einige Informationen hinzu. –

+0

Hallo Maxim, ich habe die Bestellung nicht aufgegeben, da ich nicht die richtige Aussage für meine Abfrage kenne. Wie auch immer ich probierte Order by (Column_Name) Desc oder Asc, und es wurde erfolgreich ausgeführt. Aber meine Sorge ist, das Ergebnis in der Reihenfolge anzuordnen, die ich in SQL-Anweisung aufliste. – gngadada

Antwort

3

Da Sie durch mehrere Werte in einer nicht-sequenziellen Reihenfolge bestellen möchten, ist, dass sie nicht numerisch, um noch würden sie richtig, um als VARCHAR bestellt werden , müssen Sie numerische Werte auf sie anwenden. Hier ist, wie Sie das tun können.

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 

In Zukunft, wenn Sie auf nicht-numerischen Felder sortieren, müssen Sie vertraut sein, wie SQL Server diese abwickelt.

Betrachten Sie diese

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 
Verwandte Themen