我正在嘗試對一列執行 DISTICNT 查詢,並按下不在 SELECT 語句中的另一列進行排序。我收到此錯誤:
查詢失敗 SQLSTATE[HY000]:一般錯誤:3065 表達式 #1 ORDER BY 子句不在 SELECT 清單、參考列中 'midnites_midNite.product_in_category.sortOrder' 不在 選擇清單;這與 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 表達式 #1 ORDER BY 子句不在 SELECT 清單、參考列中 'midnites_midNite.product_in_category.sortOrder' 不在 選擇清單;這與 DISTINCT 不相容
SELECT DISTINCT product_ID FROM product_in_category WHERE cat_ID = 9 ORDER BY sortOrder
我以各種方式嘗試了各種 union、join 和 select 語句。我希望這是能夠理解的,並感謝您提供的任何幫助! ! !