Sie befinden sich aktuell in den linux-blog - Fa. anracon - Dr. Mönchmeyer Blog-Archiven für den folgenden Tag 17.8.2011.
| M | D | M | D | F | S | S |
|---|---|---|---|---|---|---|
| « Jul | Okt » | |||||
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 | ||||
- Allgemein (2)
- Apache (2)
- Blender (1)
- Cups, Druck (1)
- Eclipse für PHP-Projekte (7)
- Erfahrungsberichte (68)
- Firewall Netfilter Iptables (1)
- Hardware, Treiber (13)
- Impressum (1)
- KDE (41)
- Kontact - Kmail (12)
- LAMP / Webentwicklung (28)
- LDAP (4)
- LibreOffice, OpenOffice (8)
- Linux 3D Desktop (8)
- MySQL (1)
- Netzwerk (8)
- Open Source (1)
- Open-Xchange (12)
- Open-Xchange 5 (10)
- Open-Xchange 6 (2)
- Opensuse 12.1 (2)
- Postfix, Cyrus, Kmail (7)
- Sound (8)
- Verschlüsselung (Mail, SSH) (4)
- VMware Workstation (13)
- Web - Browser und Co. (11)
- Xen und KVM (2)
- 11.5.2012: Opensuse 12.1 - LDAP III
- 23.4.2012: VMware WS 8.0.2 - CPU Spitzen und Systemhänger
- 25.3.2012: Opensuse 12.1 - LDAP II
- 11.3.2012: Opensuse 12.1 - LDAP I
- 12.2.2012: OX 5 - LDAP Restaurierung nach Fehler
- 4.2.2012: Kmail 4.8 - Suchfunktionalität weiterhin im Eimer
- 4.2.2012: Update KDE 4.8 - Nepomuks hohe CPU-Last
- 8.1.2012: Opensuse 12.1 - Installationserfahrungen
- 3.1.2012: Opensuse 11.4 / 12.1 - Problem mit ssh -X
- 28.11.2011: Cyrus IMAP unter Opensuse auf die Schnelle
homepages
- Mai 2012
- April 2012
- März 2012
- Februar 2012
- Januar 2012
- November 2011
- Oktober 2011
- August 2011
- Juli 2011
- Mai 2011
- April 2011
- März 2011
- Februar 2011
- Januar 2011
- Dezember 2010
- Oktober 2010
- September 2010
- August 2010
- Juli 2010
- Juni 2010
- Mai 2010
- April 2010
- März 2010
- Februar 2010
- Januar 2010
- Dezember 2009
- November 2009
- Oktober 2009
- September 2009
- August 2009
- Juli 2009
- Juni 2009
- Mai 2009
- April 2009
- Februar 2009
- Januar 2009
- Dezember 2008
- November 2008
- Oktober 2008
- September 2008
- August 2008
- Juli 2008
- Juni 2008
- Mai 2008
- Februar 2008
- Oktober 2007
- September 2007
- Juli 2007
Archive für 17.8.2011
MySQL - Sortierung in UNION Statements
17.8.2011 von rmo.
Heute sind meine Frau und ich über ein kleines My-SQL-Problem gestolpert. Wir hatten ein Statement der Art
( SELECT …. ORDER BY …) UNION (SELECT ….. ORDER BY … )
Wir waren beide der Meinung, dass das zusammengesetzte Ergebnis pro Einzelresultset die jeweils gewünschte Sortierung aufweisen würde. Das war aber leider nicht der Fall !
Dabei hatten wir bereits früher ähnliche Statements verwendet, in denen die Sortierung funktionierte! Wir hatten jedoch eine bedeutsame Kleinigkeit übersehen. Unsere früheren Statements waren nämlich von der Art:
( SELECT …. ORDER BY … LIMIT .. ) UNION (SELECT ….. ORDER BY … LIMIT …. )
Der Unterschied liegt in der Vorgabe von LIMIT, also der Begrenzung der jeweiligen Teil-Resultsets im UNION-Statement. Wir haben dann ein wenig herumprobiert und herausgefunden, dass eine LIMIT-Vorgabe tatsächlich erforderlich ist, wenn beide (oder mehrere) Resultsets separat sortiert und danach zum Union-Resultset zusammengefügt werden sollen.
Offenbar ignoriert der MySQL-Optimizer die ORDER-Statements der Teil-Selects, wenn die einzelnen Resultsets nicht explizit begrenzt werden.
Somit stehen einem wohl zwei Arten zur Verfügung, wei man ein UNION-Resultset ordnen kann:
- Variante 1 - separate Sortierung der Einzel-Resultsets :
( SELECT …. ORDER BY … LIMIT … ) UNION (SELECT ….. ORDER BY … LIMIT … )
- Variante 2 - Sortierung des Gesamt-Resultsets :
( SELECT …. ) UNION (SELECT …. ) ORDER BY ….
Hinweise:
Die Klammerung ist mindestens im zweiten Beispiel von ausschlaggebender Bedeutung.
Klar auch, dass dabei die Felder der Einzel-Selects identisch sein sollten.
Links:
In einigen MySQL-Foren findet man tatsächlich auch entsprechende Hinweise. Man sollte da doch öfter mal reinschauen:
http://www.mysqlfaqs.net/mysql-faqs/Funtions-and-Operators/How-does-union-work-in-MySQL
http://forums.mysql.com/read.php?10,412000,412000
Geschrieben in MySQL | Keine Kommentare »