SQL基礎(四) SQL連線時去掉重複資料

2022-04-29 13:09:06 字數 1090 閱讀 3759

1.重複資料完全一樣,用distinct

select distinct * from table

根據欄位去重用distinct

select distinct 列名稱 from 表名稱 (對一列進行操作)

select distinct 列名稱1,列名稱2  from 表名稱(對多列進行操作):對多列操作,表示選取 多列都不重複的資料,相當於 多列拼接的記錄 的整個一條記錄 , 不重複的記錄。

注意:(1). distinct 必須放在第乙個引數。(2).distinct 表示對後面的所有引數的拼接取 不重複的記錄,相當於 把 select 表示式的項 拼接起來選唯一值。

二、sysno列不同,sysno型別為int,自增字段,使用聚合函式max或其他

左連線重複資料表時:先過濾掉有表重複資料

select * from table1 with(nolock) a

left join table2 soex on a.sosysno=soex.sosysno and soex.extensionname='isconfirm'

where soex.sysno in(select max(sysno) from  table where sosysno=a.sosysno)

三、使用row_number() over()和partition by給每一組新增行號

row_number() over()分組排序功能:

在使用 row_number() over()函式時候,over()裡頭的分組以及排序的執行晚於 where group by  order by 的執行。

partition by 用於給結果集分組,如果沒有指定那麼它把整個結果集作為乙個分組,它和聚合函式不同的地方在於它能夠返回乙個分組中的多條記錄,而聚合函式一般只有乙個反映統計值的記錄。

select * from

(select *, row_number() over (partition by 分組字段(可多個) order by 排序字段) rownum from 表) as result

where rownum=1

先分組排序,再取出每組的第一條記錄進行「去重」

sql基礎 sql連線查詢

這兩天在專案中寫連線查詢的時候突然回憶了一下各種連線查詢的語法 結果等,發現自己出了經常用的left join on 和等值連線以外其他的都不是很確定,於是乎就看看了相關的資料便有了這篇博文。sql 92標準所定義的from子句的連線語法格式為 fromjoin tablejoin typejoin...

SQL基礎 連線表

sql最強大的特性之一是能夠在資料檢索查詢中動態地聯接表。連線是使用sql select可以執行的最重要的操作之一,對連線和連線語法的良好理解是學習sql極為重要的一部分。在您可以有效地使用連線之前,您必須了解關係表和關聯式資料庫設計的基礎知識。下面的內容絕不是對這個主題的完整介紹,但應該足以讓您開...

SQL基礎語法(四)

sql order by 子句 order by 語句用於對結果集進行排序。order by 語句 order by 語句用於根據指定的列對結果集進行排序。order by 語句預設按照公升序對記錄進行排序。如果您希望按照降序對記錄進行排序,可以使用 desc 關鍵字。原始的表 用在例子中的 ord...