我覺得這是一個滿怪的問題,簡單來說就是SELECT語法有DISTINCT時, ORDER BY一定要有明確的欄位,不過我需要的排序比較麻煩,結果就出錯了,出錯的語法像這樣
SELECT DISTINCT field1, field2 FROM tbl1 ORDER BY SUBSTRING(field1,5,1), SUBSTRING(field1,3,1) |
像這種比較詭異的排序規則,就會跳出錯誤,解法有2種
解法1: 將查詢跟排序當作兩個查詢來看
SELECT * FROM ( SELECT DISTINCT field1, field2 FROM tbl1 ) AS tbl_tmp -- 建一個虛擬的表 ORDER BY SUBSTRING(tbl_tmp.field1,5,1), SUBSTRING(tbl_tmp.field1,3,1) |
這樣就可以把DISTINCT跟ORDER BY分開,就不會出錯了
解法2: 將排序的規則加到SELECT的欄位中
SELECT DISTINCT field1, field2, SUBSTRING(field1, 5, 1) AS field1_1, SUBSTRING(field1, 3, 1) AS field1_2 FROM tbl1 ORDER BY field1_1, field1_2 |
因為值已經在SELECT的時候明確產生了,就不會出問題啦
相關文章 :
