首頁  >  問答  >  主體

使用DISTINCT查詢和ORDER BY導致mySQL錯誤

我正在嘗試對一列執行 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 語句。我希望這是能夠理解的,並感謝您提供的任何幫助! ! !

P粉541551230P粉541551230183 天前435

全部回覆(1)我來回復

  • P粉536909186

    P粉5369091862024-04-01 09:29:51

    雷雷

    回覆
    0
  • 取消回覆