Erreur MySQL lors de l'utilisation de la requête DISTINCT et ORDER BY
P粉541551230
P粉541551230 2024-03-31 10:27:16
0
1
508

J'essaie d'effectuer une requête DISTICNT sur une colonne et de trier par une autre colonne qui ne figure pas dans une instruction SELECT. J'obtiens cette erreur :

Échec de la requête SQLSTATE[HY000] : erreur générale : 3065 ​​Expression #1 Clause ORDER BY absente de la liste SELECT, colonne référencée 'midnites_midNite.product_in_category.sortOrder' n'est pas présent Sélectionnez la liste ; ceci n'est pas compatible avec DISTINCT

J'ai un exemple de table products_in_category avec quatre colonnes : ID, cat_ID, product_ID et sortOrder. J'ai essayé d'effectuer une requête Product_ID WHERE cat_ID = 9 DISTICNT et de trier par la valeur de requête associée dans la colonne sortOrder.

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

Cette requête renvoie 3 valeurs 5, 26, 7, ce qui est correct, mais je dois également trier par leur valeur sortOrder associée. Si j'utilise cette requête ci-dessous, elle renvoie 5 valeurs, ce qui est incorrect car toutes les valeurs de la colonne sortOrder sont uniques.

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

Si j'utilise la requête ci-dessous, MySQL renvoie cette erreur et je comprends pourquoi, sortOrder n'est pas inclus dans l'instruction SELECT. Je ne sais pas comment effectuer une requête DISTICNT sur la colonne Product_ID et trier selon la valeur sortOrder associée de la valeur renvoyée.

Échec de la requête SQLSTATE[HY000] : erreur générale : 3065 ​​Expression #1 Clause ORDER BY absente de la liste SELECT, colonne référencée 'midnites_midNite.product_in_category.sortOrder' n'est pas présent Sélectionnez la liste ; ceci n'est pas compatible avec DISTINCT

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

J'ai essayé diverses déclarations d'union, de jointure et de sélection de différentes manières. J'espère que cela est compréhensible et j'apprécie toute aide que vous pouvez apporter ! ! !

P粉541551230
P粉541551230

répondre à tous(1)
P粉536909186
SELECT product_ID, MIN(sortOrder) AS minSortOrder
    FROM product_in_category
    WHERE cat_ID = 9
    GROUP BY product_ID;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal