DISTINCT查询和ORDER BY引发mySQL错误



我试图对一列执行DISTICNT查询,并按SELECT语句中没有的另一列排序。我得到这个错误:

查询失败SQLSTATE[HY000]:一般错误:3065表达式#1,共ORDER BY子句不在SELECT列表中,引用列不在中的'midnites_midNite.product_in_category.sortOrder'SELECT列表;这与DISTINCT 不兼容

我有一个products_in_category示例表,它有四列,ID、cat_ID、product_ID和sortOrder。我一直在尝试对product_ID WHERE cat_ID=9执行DISTICNT查询,并根据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

这个查询返回3个值5、26、7,这是正确的,但我也需要根据它们关联的sortOrder值进行排序。如果我在下面使用这个查询,它会返回5个值,这是不正确的,因为sortOrder列中的所有值都是唯一的。

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

如果我使用mySQL下面的查询会抛出这个错误,并且我理解原因,那么SELECT语句中没有包含sortOrder。我不知道如何对product_ID列执行DISTICNT查询,并根据返回值的关联sortOrder值进行排序。

查询失败SQLSTATE[HY000]:一般错误:3065表达式#1,共ORDER BY子句不在SELECT列表中,引用列不在中的'midnites_midNite.product_in_category.sortOrder'SELECT列表;这与DISTINCT 不兼容

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

我尝试过以各种方式使用各种联合、联接和选择语句。我希望这是可以理解的,并感谢你能提供的任何帮助!!!

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

最新更新