sql重複資料只取一條記錄,sql根據某一個欄位重複只取第一條資料

時間 2021-10-14 22:25:42

1樓:baby_原來

1、sql select distinct 語句在表中,可能會包含重複值。這並不成問題,不過,僅僅列出不同(distinct)的值。

語法:select distinct 列名稱 from 表名稱select distinct company from orders

2、子查詢限制返回結果

select * from testdatawhere

id in

( --根據data分類獲取資料最小id列表select min(id) from testdatagroup by data)

2樓:匿名使用者

select distinct(籍貫) from 學生資訊 --去除重複記錄 distinct(不相同).查詢去除籍貫重複的資訊

3樓:天堂鳥地獄火

以姓名為範圍,以id排逆序,取最大值。

with v as (select 姓名, row_number() over (partition by 姓名 order by id desc) as rk, id, 職業

from tablea)

select id,姓名,職業

from v where rk=1

4樓:匿名使用者

select * from 表名

where id in

select id from

(select max(id) as id ,姓名, from 表名 group by 姓名

) as as 表2

5樓:匿名使用者

select max(id),姓名,min(職業) from 表名 group by 姓名

6樓:匿名使用者

我還是覺得 這樣做好像是錯的。

id 姓名 職業

1 張三 學生

。。。。

3 張三 程式設計師

首先 id 這個 應該是主鍵 不不會 重複的不管有多少個人 叫張三 ,你的id都是不同的。你的職業可以相同也可以不相同,難道還能要求人家性別相同或者不相同。就2個性別,人妖我不知道算不算 ,但是加起來 也就三個。

所有 我覺得你現在要搞明白什麼可以重複什麼不可以重複。

sql ** 上面 也有,但是 這個表的查詢 有必要嗎?

sql根據某一個欄位重複只取第一條資料

7樓:

使用分析函式row_number() over (partiion by ... order by ...)來進行分組編號,然後取分組標號值為1的記錄即可。

目前主流的資料庫都有支援分析函式,很好用。

其中,partition by 是指定按哪些欄位進行分組,這些欄位值相同的記錄將在一起編號;order by則是指定在同一組中進行編號時是按照怎樣的順序。

示例(sql server 2005或以上適用):

select s.*

from (

select *, row_number() over (partition by [手機號] order by [店鋪]) as group_idx

from table_name

) swhere s.group_idx = 1

8樓:匿名使用者

用group by 最後一個欄位 用個max()

9樓:發生等將發生

如果僅僅只是查詢出來去從,那麼就用distinctselect distinct 需要去重的列明(允許多列) from table

如果是需要在表中刪除,可以這樣處理

1、建立臨時表,將重複記錄查詢出來去重插入到臨時表2、刪除實表中的重複記錄

3、將臨時表中的記錄插入到實表

處理完成

10樓:匿名使用者

select * into ##tmp_table from 表where 1=2

declare @phoneno int

declare cur cursor forselect 手機號 from 表 group by 手機號open cur

fetch next from cur into @phonenowhile @@fetch_status=0begin

insert into ##tmp_tableselect top 1 from 表 where 手機號=@phoneno

fetch next from cur into @phonenoendselect * from ##tmp_tabledrop table ##tmp_table

11樓:匿名使用者

最簡單的 select distinct (手機號)

12樓:老漢肆

select

temp.id,

temp.device_id,

temp.update_dtm,

temp.test_result

from (

select

t.id,

t.device_id,

t.update_dtm,

t.test_result,

row_number() over(partition by device_id order by t.update_dtm desc) as row_***

from device_info_tbl t ) tempwhere temp.row_*** = '1'

求sql語句只修改重複資料中的一條記錄

用檢視就可以啊 create view v1 a,b,c,d as select a,b,c,row number over partition by a,b,c order by a as d from 表名 update v1 set a 新值a b 新值b c 新值c where d 1 這樣...

oracle刪除重複記錄只保留一條資料的幾種方法

你好 一種簡單方式就是直接根據你不想要的資料進行分組後儲存到另外一張表裡面 create table as select from b group id 可以寫儲存過程來實現判斷重複資料後刪除。另外一種方法就是插入的時候直接設定主見不讓他插入,直接提示不能插入。這個可以參考資料 oracle中刪除兩...

sql如何取第一第二條,sql取第二條記錄怎麼取

第一大比較好求 select from table a,select 姓名,max 結賬時間 結賬時間 from table group by 姓名 b where a.姓名 b.姓名 and a.結賬時間 b.結賬時間 第二大和第三大都可能有點複雜 select from table a left...