mysql數據去重並排序使用distinct 和 order by 的問題


比如直接使用:

SELECT
  distinct mobile
FROM
  table_a
WHERE
  code = 123
ORDER BY
  a_ime desc

在本地mysql數據庫沒有錯,在線上的數據庫就會報如下錯(估計是版本的問題):
Expression #1 of ORDER BY clause is not in SELECT list, references column 'table_a.a_time' which is not in SELECT list


大意是:
order by 的列必須在 select中有。如果直接在select 中添加a_time 列,是不符合題意的

應該增加一層嵌套,改成如下:

SELECT
  distinct mobile
FROM (
  SELECT
    mobile
  FROM
    table_a
  WHERE
    code = 123
  ORDER BY
    a_time desc
) as tmp

 

最后一句as map 必須要,如果沒有這一句,就報語法錯誤:
Every derived table must have its own alias
每一個派生出來的表都必須有一個自己的別名

 

原創文章,歡迎轉載,轉載請注明出處!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM