Maison > Questions et réponses > le corps du texte
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粉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;