1. 程式人生 > >查詢:對某一欄位去重,並獲得其他欄位資訊

查詢:對某一欄位去重,並獲得其他欄位資訊

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

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

在thinkphp3.2 中

$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去重的目的。


在mysql中:

 select * from table group by name

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


    如果SQL語句還有limit,order by等條件,必須放在group by後面。
這樣就達到了既去重,又能夠輸出更多欄位資訊的目的.