我正在嘗試對一列進行 DISTICNT 查詢,并按不在 SELECT 陳述句中的另一列進行排序。我收到此錯誤:
查詢失敗 SQLSTATE[HY000]:一般錯誤:3065 ORDER BY 子句的運算式#1 不在 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 下面的查詢會引發此錯誤并且我理解原因,則 sortOrder 未包含在 SELECT 陳述句中。我不確定如何對 product_ID 列進行 DISTICNT 查詢并按回傳值的關聯 sortOrder 值進行排序。
查詢失敗 SQLSTATE[HY000]:一般錯誤:3065 ORDER BY 子句的運算式#1 不在 SELECT 串列中,參考列 'midnites_midNite.product_in_category.sortOrder' 不在 SELECT 串列中;這與 DISTINCT 不兼容
SELECT DISTINCT product_ID
FROM product_in_category
WHERE cat_ID = 9
ORDER BY sortOrder
我以各種方式嘗試了各種聯合、加入和選擇陳述句。我希望這是可以理解的,并感謝您提供的任何幫助!!!
uj5u.com熱心網友回復:
SELECT product_ID, MIN(sortOrder) AS minSortOrder
FROM product_in_category
WHERE cat_ID = 9
GROUP BY product_ID;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/526381.html
標籤:mysql清楚的
