suchen

Heim  >  Fragen und Antworten  >  Hauptteil

MySQL-Fehler bei Verwendung der DISTINCT-Abfrage und ORDER BY

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粉541551230P粉541551230268 Tage vor550

Antworte allen(1)Ich werde antworten

  • P粉536909186

    P粉5369091862024-04-01 09:29:51

    SELECT product_ID, MIN(sortOrder) AS minSortOrder
        FROM product_in_category
        WHERE cat_ID = 9
        GROUP BY product_ID;

    Antwort
    0
  • StornierenAntwort