MySQL-Fehler bei Verwendung der DISTINCT-Abfrage und ORDER BY
P粉541551230
P粉541551230 2024-03-31 10:27:16
0
1
428

Ich versuche, eine DISTICNT-Abfrage für eine Spalte durchzuführen und nach einer anderen Spalte zu sortieren, die nicht in einer SELECT-Anweisung enthalten ist. Ich erhalte diesen Fehler:

Abfrage fehlgeschlagen SQLSTATE[HY000]: Allgemeiner Fehler: 3065 Ausdruck Nr. 1 ORDER BY-Klausel nicht in der SELECT-Liste, referenzierte Spalte „midnites_midNite.product_in_category.sortOrder“ ist nicht vorhanden Auswahlliste; diese ist nicht mit DISTINCT kompatibel

Ich habe eine Beispieltabelle „products_in_category“ mit vier Spalten: ID, cat_ID, product_ID und sortOrder. Ich habe versucht, eine Product_ID WHERE cat_ID = 9 DISTICNT-Abfrage durchzuführen und nach dem zugehörigen Abfragewert in der Spalte sortOrder zu sortieren.

ID      cat_ID  product_ID  sortOrder
+----------+--------+-----------+--------+
|    1     |    9   |     5     |    3   |
+----------+--------+-----------+--------+
|    2     |    9   |     26    |    1   |
+----------+--------+-----------+--------+
|    3     |    9   |     5     |    2   |
+----------+--------+-----------+--------+
|    4     |    9   |     7     |    4   |
+----------+--------+-----------+--------+
|    5     |    9   |     5     |    5   |
+----------+--------+-----------+--------+
|    6     |   22   |     4     |    6   |
+----------+--------+-----------+--------+

SELECT DISTINCT product_ID 
FROM product_in_category 
WHERE cat_ID = 9

Diese Abfrage gibt 3 Werte zurück: 5, 26, 7, was korrekt ist, aber ich muss auch nach dem zugehörigen sortOrder-Wert sortieren. Wenn ich diese Abfrage unten verwende, werden 5 Werte zurückgegeben, was falsch ist, da alle Werte in der Spalte „sortOrder“ eindeutig sind.

SELECT DISTINCT product_ID, 
                sortOrder 
FROM product_in_category 
WHERE cat_ID = 9 
ORDER BY sortOrder

Wenn ich die folgende Abfrage verwende, löst mySQL diesen Fehler aus und ich verstehe, warum sortOrder nicht in der SELECT-Anweisung enthalten ist. Ich bin nicht sicher, wie ich eine DISTICNT-Abfrage für die Spalte „Product_ID“ durchführen und nach dem zugehörigen sortOrder-Wert des zurückgegebenen Werts sortieren soll.

Abfrage fehlgeschlagen SQLSTATE[HY000]: Allgemeiner Fehler: 3065 Ausdruck Nr. 1 ORDER BY-Klausel nicht in der SELECT-Liste, referenzierte Spalte „midnites_midNite.product_in_category.sortOrder“ ist nicht vorhanden Auswahlliste; diese ist nicht mit DISTINCT kompatibel

SELECT DISTINCT product_ID 
FROM product_in_category 
WHERE cat_ID = 9
ORDER BY sortOrder

Ich habe verschiedene Union-, Join- und Select-Anweisungen auf unterschiedliche Weise ausprobiert. Ich hoffe, das ist verständlich und freue mich über jede Hilfe, die Sie leisten können! ! !

P粉541551230
P粉541551230

Antworte allen(1)
P粉536909186
SELECT product_ID, MIN(sortOrder) AS minSortOrder
    FROM product_in_category
    WHERE cat_ID = 9
    GROUP BY product_ID;
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!