distinct 和order by 衝突解決方案

2021-09-24 21:53:50 字數 1068 閱讀 6827

在新版的mysql5.7的版本中,如果distinctorder by一起使用將會報3065錯誤,sql語句無法執行。最新的mysql5.7版本語法比之前5.6版本語法更加嚴格導致的。distinct和order by都會對資料進行排序操作,所以會產生衝突。

select

distinct a.title,a.tax_no

from

order_invoice a

left join order_data b on a.order_id = b.order_id

where

b.user_id = 166 and a.state= 20 and a.head_type=2 order by a.create_date desc limit 0,3

解決方法一:

使用group by 替代 distinct 的去重功能

select c.title as name ,c.taxno as taxno from (

select

a.title as title,a.tax_no as taxno,max(a.id) as id

from

order_invoice a

left join order_data b on a.order_id = b.order_id

where

b.user_id = 166 and a.state= 20 and a.head_type=2 group by a.title,a.tax_no ) c order by c.id desc limit 0,3

解決方法二 :

編輯mysql5.7的配置檔案,新增配置sql_mode=no_engine_substitution,strict_trans_tables,這段**同時也可以解決mysql5.7中的group by導致的1055錯誤

python中order函式 order by排序

作者 課程概述 anaconda安裝python程式設計環境,整合500多資料科學包 pandas可實現自動化處理excel資料,是乙個非常強大的包,此課程詳細講述pandas應用 sqlite3是python的乙個包,用於python執行sql語句,完成取數,加工資料,更新,刪除資料,繪製圖等等。...

rownum 和 distinct 的含義

rownum是oracle系統順序分配為從查詢返回的行的編號,返回的第一行分配的是1,第二行是2,依此類推,這個偽欄位可以用於限制查詢返回的總行數.oracle在select出一條記錄後便加上乙個rownum,而不等所有的結果都select出來後再加上rownum。然後是distinct的工作原理。...

Linq實現In條件和Distinct效果

in寫法 arraydictype int陣列 db.getquery where a arraydictype.contains a.dictype tolist person1 id 1,name test1 person2 id 1,name test1 person3 id 2,name t...