Ich bin versucht, die folgenden Informationen aus einer Tabelle zu erhalten:MySQL Query - Mischung aus Sortieren und Gruppieren
- durch "b" Sortieren (Tabelle A aufsteigend, absteigend Tabelle B)
- alle „u "mit einem bestimmten Wert erscheint zuerst (in diesem Beispiel u = 3) - dann ist die Reihenfolge nicht wichtig
- N (NULL) immer am Ende
- nein" r "darf zweimal vorkommen (aber alle anders" r " muss vorhanden sein)
Mit "ORDER BY IFNULL (u, 99999999)! = 3, u, b" funktioniert das Kriterium 1, 2 und 3, aber für die letzte habe ich keine Ahnung.
Mit DISTINCT erreiche ich nicht das Ziel, genau wie bei GROUP BY.
Hat jemand eine Idee? Vielen Dank im Voraus.
start table target table A
+----------------+ +----------------+
| id | r | u | b | | id | r | u | b |
+----------------+ +----------------+
| 1 | 1 | 1 | 9 | | 18 | 5 | 3 | 1 |
| 2 | 1 | 3 | 4 | | 2 | 1 | 3 | 4 |
| 3 | 1 | 4 | 6 | | 15 | 4 | 3 | 7 |
| 4 | 1 | 5 | 5 | | 11 | 3 | 3 | 8 |
| 5 | 2 | 1 | 2 | | * | 2 | * | * |
| 6 | 2 | 2 | 1 | | 21 | 6 | N | N |
| 7 | 2 | 4 | 5 | +----------------+
| 8 | 2 | 5 | 7 |
| 9 | 3 | 1 | 4 |
| 10 | 3 | 2 | 3 |
| 11 | 3 | 3 | 8 |
| 12 | 3 | 5 | 2 | target table B
| 13 | 4 | 1 | 3 | +----------------+
| 14 | 4 | 2 | 2 | | id | r | u | b |
| 15 | 4 | 3 | 7 | +----------------+
| 16 | 4 | 4 | 6 | | 11 | 3 | 3 | 8 |
| 17 | 5 | 2 | 9 | | 15 | 4 | 3 | 7 |
| 18 | 5 | 3 | 1 | | 2 | 1 | 3 | 4 |
| 19 | 5 | 4 | 6 | | 18 | 5 | 3 | 1 |
| 20 | 5 | 5 | 4 | | * | 2 | * | * |
| 21 | 6 | N | N | | 21 | 6 | N | N |
+----------------+ +----------------+
Wie wählen Sie, welche Zeilen zu nehmen, wenn es mehr als zwei Werte auf der 'R' Spalte? Und ich bin mir nicht sicher, ob ich dich verstanden habe, ist 'targetA' und' targetB' die Ausgabe von 'StartTable'? – sagi
Können Sie Ihren Code anzeigen? –
Starttabelle ist die Tabelle in der Datenbank und Zieltabellen sind meine gewünschten Ergebnisse – Seamanx