查詢 對某一字段去重,並獲得其他字段資訊

2021-07-11 20:20:59 字數 804 閱讀 2901

想在table1表中,查公司中的員工名字有哪些,table1表中員工有重名的情況,所以要對員工名去重,並且要得到員工名字、及其對應的部門號dept_id

即:對name欄位去重,並獲得name, dept_id 字段

$table1= m('table1');

使用下面方法:

$result = $table1 -> where ( $where )

->field ( 'name,dept_id' )  

->distinct(true)

->order('create_time desc')   //排序

->select ();

這樣使用的話,是對name, dept_id 去重,當dept_id 不同時,即時name 相同也會被查詢出來。

解決: 

$result = $table1 -> where ( $where )

->field (  'name,dept_id' )  

->group('name')    

->order('create_time desc')   //排序

->select ();

這樣就會去重,缺省會取出來每個分組的第一行資料,這樣就達到了對name去重的目的。

select * from table group by name

因為select後的字段必須在group by 中出現,暫時先做到查詢出全部資訊

如果sql語句還有limit,order by等條件,必須放在group by後面。

這樣就達到了既去重,又能夠輸出更多字段資訊的目的.

MySQL對某一字段去重

mysql有乙個去重關鍵字distinct,但是如果查詢的字段有很多,而想要去重的字段只是其中的某乙個,那麼僅僅用distinct是完成不了的,distince只能做到你查詢的那些欄位都是重複時才會去重。比如有一張使用者表的資料是這樣的 這裡我們本意是想查出一條資料,如果是這樣寫sql語句 sele...

對二維陣列的某一欄位求和

方法一 array sum array map create function val return val size arr 方法二 array sum array map function val arr 對於windows系統,這兩種方法均可用。對於linux系統,只有方法一可用,如果是方法二...

oracle 在某一欄位特定位置批量插入字元

在頭部或尾部插入比較簡單,這裡主要介紹兩種方法,可以採用字串連線符 和concat 函式。需要注意的是字串連線符 可以連線多個字串,concat 函式只能連線兩個。以頭部舉例 更新在s user表中的user name欄位,並在user name的頭部插入字元 aaa 1 update s user...