2017-02-09 3 views
0

Ich habe eine einfache Frage. Ich muss mehrere Abfragen verbinden und die meisten von ihnen hat Ad IN clausole. Leider erlaubt MySQL keine ORDER BY in einer UNION (nur außerhalb aller Gewerkschaften), aber ich brauche eine bestimmte Reihenfolge, die ich bei einer externen Bestellung nicht bekommen kann.Mysql - Bestellung von in Clausole

Frage ist: Wenn ich ein IN clausole wie

foo in ('newyork','boston','atlanta') 

kann ich davon ausgehen, MySql des Motors wird die resultierenden Reihen von IN-Position bestellt werden (so wird zunächst die ganze Zeile mit ‚newyork‘ foo = dann ' boston‘etc ...

Dank.

Antwort

2

Nein, es ist nichts dergleichen. Sie benötigen eine order by-Klausel explizit hinzufügen.

Wenn yo Wenn Sie Ihre Zeilen basierend auf der Position in einem Satz bestellen möchten, können Sie die Funktion field verwenden.

order by field(foo,'newyork','boston','atlanta') 
+0

Vielen Dank. Leider ist eine Bestellung innerhalb von Union nicht möglich, aber eine gute Lösung. Ich werde die Abfragen außerhalb im Programmcode zusammenführen. – MrMime

1
Select * 
from 
(
    Select * from Temp1 
    order by x 
) Tbl1 
UNION 
Select * 
from 
(
    Select * from Temp2 
    order by y 
) Tbl2 

bereits.