1. 程式人生 > >如何用distinct消除重複記錄的同時又能選取多個欄位值?

如何用distinct消除重複記錄的同時又能選取多個欄位值?

需求是:我要消除name欄位值重複的記錄,同時又要得到id欄位的值,其中id是自增欄位。 
select distinct name from t1 能消除重複記錄,但只能取一個欄位,現在要同時取id,name這2個欄位的值。 
select distinct id,name from t1 可以取多個欄位,但只能消除這2個欄位值全部相同的記錄 
最後解決方法: 
SELECT id,name FROM t1 WHERE id IN(SELECT MAX(id) FROM t1 GROUP BY name) order by id desc

注意開頭的 id 的 一定要,後面的order by 裡有的欄位一定要加進select 結果,要不然排序無效

相關推薦

如何用distinct消除重複記錄同時選取

需求是:我要消除name欄位值重複的記錄,同時又要得到id欄位的值,其中id是自增欄位。  select distinct name from t1 能消除重複記錄,但只能取一個欄位,現在要同時取id,name這2個欄位的值。  select distinct id,name from t1 可以取多個欄位

MySQL資料庫查詢全部相同的記錄

資料庫中使用者表,資料從第三方系統匯入,由於一些垃圾資料,存在使用者名稱和密碼都相同的賬戶,造成介面上一些問題,SQL語句如下: select User_Account,User_Pwd,COUNT(

mysql DISTINCT選取,獲取distinct後的行資訊

背景 :       a表儲存關聯關係,通過ACode 獲取該關係中的所有 BCode, 並獲取所有Bcode-max(Bvrsn)的資訊  Bnm 表a 表b  

DISTINCT選取,只DISTINCT一個的解決辦法

此文是根據原作者所著加上自己的理解總結出來的,如果有什麼問題歡迎各位提出一起交流探討。先貼出原文如下: 某前臺sql語句,簡化後如下 SELECT products_name,products_viewed FROM `products_description`  O

在資料庫中查詢的時候,不物件接受

今天在做查詢從資料庫中查詢兩個欄位的問題的時候不知道是應該用物件接受,還是集合接受,開始的時候用物件接受 service層介面: User userUpdateByAccount(@Param("account") String account, @Param("phone") String phone)

sql 刪除表中多餘的重複記錄),只保留一條記錄

在網上呢~自己收集了一些關於這方面的知識~  自己整理一下 1.查詢重複記錄 select * from 表名 where 重複欄位 in (select 重複欄位 from 表名 group

查詢表中多餘的重複記錄

select a.* from entest a,(select article_id,users_id from entest group by article_id,users_id having

parttion by ~~~針對某個重複,資料只取前n條。問題例子:1.主評論下的評論按著 時間正序最隻取前5條 2.獲取最新登入記錄......

分組目前已知partition by、group by partition by用於給結果集分組分割槽,如果沒有指定那麼它把整個結果集作為一個分組,最後顯示具體資料 group by:通過所查詢的資料的某一欄位或屬性進行分組,最後顯示組資料,而不是具體資料,因為select 後面的所有列中,沒有使用聚合函

sql---distinct顯示,去重複

眾所周知,distinct可以列出不重複的記錄,對於單個欄位來說distinct使用比較簡單,但是對於多個欄位來說,distinct使用起來會使人發狂。而且貌似也沒有見到微軟對distinct使用多欄位的任何說明。下面就提供了一種方法可以在使用distinct的時候同時使

MySQL根據某一個或者查詢重複資料,並且保留某最大的記錄

問題場景 當系統沒有處理好併發操作的情況下,操作人員同時操作一張表的情況下,資料庫有可能被插入相同記錄,這些會帶來隱藏的bug。 解決思路一 解決併發操作的衝突。 解決思路二 對資料庫(MySQL)某張表去重,首先確定你的業務是否允許重複,不允許你

查詢oracle資料庫是否有重複資料(根據判斷)

根據多個欄位查詢重複資料的總條數: sql = "select count(*) from tablea a where (a.askname, a.atime) in (select askname,atime from tablea group by askname,atime having count

mybatis 實現批量更新 更新記錄為不同的

更新多條記錄為多個欄位為不同的值 比較普通的寫法,是通過迴圈,依次執行update語句。 Mybatis寫法如下: <update id="updateBatch" parameterType="java.util.List"> <foreach coll

儲存型XSS攻擊的簡單處理以及資料庫查詢過濾重複資料

 問題:儲存型Xss是由於form表單提交的資料,前端和後臺未進行過濾,將一些javascript的腳步語言存入資料庫中。導致再次查詢資料的時候瀏覽器會執行該腳步語言。如:<script>alert("XSS")</script>。 解決方案:主要是後臺的過

SQL中刪除單重複重複的方法

--刪除OrderDetails表中materialscode欄位重複的行,只保留ID最小的一行資料 delete from OrderDetails where materialscode in (select materialscode from OrderDetails group by

【mysql】sql刪除重複資料有主鍵和沒主鍵解決方法

table user      name age nub      張三    12  23      張三    12  23      張三    12  23      李四    13  21      李四    13  21      王五    11  25

SQL子查詢結果更新

作者:iamlasong 要求:表格的內容需要變更,變更的內容放在一個臨時表中,用SQL語句更新正式表中多個欄位。 如果更新一個欄位,直接用欄位名=子查詢就可以了,多個欄位更新,將欄位在括號中並列寫出

mysql 刪除單表內重複的資料

遇到個問題,一個表內兩個欄位應該加上unique約束,但沒加導致出現重複資料,網上找到一條sql可以刪掉重複資料,原sql是這樣的: DELETE from test WHERE (mid,uid) in (SELECT mid,uid FROM test GROUP

oracle 一個表的更新另一個表對應的

update wx_weather a set (a.high_l,a.low_l)= (select high_l, low_l from wx_original_weather b where a

SqlServer查詢同一張表中相同的記錄

SELECT   *    FROM     TABLEName SA             INNER JOIN ( C1 ,                                 C2                          FROM   TABL

Hql語句中使用distinct關鍵字查詢後以物件形式返回的方法

HQL1 :select distinct rs.country,rs.language  from ResourceBundle rs;  我們這樣寫的話返回的是Object[]陣列,而且有可能在強轉為 ResourceBundle型別是報錯, 現在想讓它返回Resour