Ich habe gerade auf MySQL 5.7 aktualisiert und leider für mich ist ein Teil der Funktionalität von GROUP BY
weg. Ich wollte alle Filme aus meiner movies
Tabelle auswählen, solange die movies.id
des Typs int
kein Duplikat ist. Meine vorherige Abfrage in MySQL 5.6 war:MySQL 5.7 zurück alle Spalten der Tabelle basierend auf separaten Spalte
SELECT *
FROM movies
WHERE movies.title LIKE '%example%'
GROUP BY movies.id
Wenn ich mit der gleichen ID zwei Filme hatte, wäre es nur einen Film angezeigt werden, anstelle von diesem Film und seinen Duplikaten.
Wenn ich auf MySQL 5.7 aktualisiert habe, gab mir die GROUP BY
Fehler und ich wurde stattdessen aufgefordert, ORDER BY
zu verwenden. Aber diese Abfrage:
SELECT *
FROM movies
WHERE movies.title LIKE '%example%'
ORDER BY movies.id
Gibt doppelte Filme zurück. Also, gibt es eine Möglichkeit, dies herauszufiltern, und nur eine Zeile zurückgeben, wenn es kein Duplikat ist?
Edit: Zum Beispiel, wenn dies ist meine movies
Tabelle:
movies
==================
| id | title |
==================
| 1 | example |
------------------
| 2 | example |
------------------
| 1 | example |
------------------
Hier ist der Ausgang jeder Abfrage:
Previous query result (with MySQL 5.6)
=======
1 | example
2 | example
New query result (with MySQL 5.7 and ORDER BY)
=======
1 | example
1 | example
2 | example
ich das Endergebnis will keine Duplikate enthält (so das Ergebnis sollte wie das erste Abfrageergebnis aussehen).
Edit 2: Ich verstehe, dass ich irgendwie die Art missbrauchte, wie MySQL GROUP BY
gehandhabt hat. Leider habe ich nicht viel Erfahrung mit MySQL und habe diese Antwort von StackOverflow bekommen. Ich möchte nur alle Spalten in meiner Tabelle zurückgeben, die keine doppelten id
s enthalten.
zu verwenden Warum haben Sie doppelte Filme? Wenn Sie keinen PRIMÄREN SCHLÜSSEL haben, haben Sie, soweit es das RDBMS betrifft, keine Tabelle. – Strawberry
@Strawberry Dies ist für eine Aufgabe in der Schule. Uns wurden absichtlich schlechte Daten für den Auftrag gegeben. : | Leider liegt es an uns, nicht duplizierte Zeilen zurückzugeben. Alles funktionierte gut bis 5.7 .. aber ich kann nicht downgrade, weil ich einige der neueren Funktionen brauche, die es zur Verfügung stellt. – Alex
GROUP BY soll mit Aggregatfunktionen arbeiten. SELECT DISTINCT ist für den Fall vorgesehen, dass keine Aggregation erforderlich ist. – Strawberry