2016-06-22 11 views
0

Vielleicht könnte jemand mir sagen, wie MySQL Ausgabe in diesem speziellen Szenario bestellen:MySQL - Ergebnis sortieren nach bestimmten Datensatz

Ich habe Tabelle wie folgt aus:

| id | Value1 | Value2 | ...More values that doesn`t matter in this example 
^-----^--------^--------^ 
| 1 | 1 | X | 
| 2 | 2 | X | 
| 3 | 3 | 2 | 
| 4 | 1 | X | 
| 5 | 2 | X | 
| 6 | 3 | 3 | 
| 7 | 1 | X | 
| 8 | 2 | X | 
| 9 | 3 | 1 | 

Ich möchte Werte von diesem erhalten Tabelle, und ich möchte sie durch Value2, aber nur dort, wo Wert1 ist 3 (X Werte ist nicht wichtig).

Was ist der beste Weg, dies zu tun, mit guter Leistung?

Vielen Dank im Voraus!

+1

Und was Sie wünschen, wenn 'Wert1 passieren ist nicht gleich 3? –

+0

Ich war nicht präzise genug: Sagen wir, dass ich nur den ID-Schlüssel bekommen möchte, aber aus der ganzen Tabelle, und ordne diese Schlüssel, die Wert1 = 3 haben, durch Wert2. Also wäre meine gewünschte Ausgabe wie folgt: (9, 3, 6, 1, 2, 4, 5, 7, 8), und mir ist nur die Reihenfolge (9, 3, 6) wichtig - ich brauche den Rest, aber In irgendeiner Reihenfolge. – Zorann

Antwort

1

Hmmm, möchten Sie where und order by?

select t.* 
from t 
where value1 = 3 
order by value2; 

EDIT:

auf den Kommentar Basierend:

select t.* 
from t 
order by (value1 = 3) desc, -- put value 3 first 
     value2 
0
SELECT * FROM TABLE WHERE Value1=3 ORDER BY Value2 
+1

Einfach und gut, aber ich muss alle Zeilen auswählen, nicht nur diejenigen, die Value1 = 3 haben – Zorann

0

Versuchen mit diesem bitte:

SELECT * FROM TABLE WHERE Value1=3 ORDER BY Value2 UNION SELECT * FROM TABLE WHERE Value1!=3