我试图对一列执行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;