資料庫通用的比較實用的sql根據某幾字段去重查詢

2021-08-20 20:48:57 字數 1296 閱讀 6090

一、首先看一下原始資料

我們現在要對第二行和第三行的customername、linkman、linkmantel這三個欄位去重查詢

要得到的結果肯定只有三行,distinct肯定是不行的

也就是這樣的效果

二、進行分析

要想得到這樣的效果

首先你得有個表,(和沒說一樣),表裡一般都會有個主鍵吧。並且我們一般也不會對主鍵進行去重查詢吧,因為主鍵本身就不會重複。我們進行去重的字段都是可以重複的,也就是所以這些是前提。正因為是可以重複的所以進行去重查詢才有意義。好吧把我自己繞進去了。

正式分析:

四條變三條資料,並且是根據其中某幾個欄位去重。那麼條件是什麼呢。以我的來分析。

1、要去重的字段:customername、linkman、linkmantel 必須要有不重複的行

2、主鍵:customerid 每行都不重複

要想從四行資料變成三行不重複的資料,customerid要少一行,所以我們要明確少哪一行,或者說要明確要得到哪一行。

所以可以通過max(),min()函式達到我們的目的。

那麼第一步:

通過對這三個字段分組,得到每一組的max(customerid),也就是這三個重複欄位的最大customerid,那麼四個customerid變成了三個。

第二步:

select * from yinlian_customer a where customerid in

(select max(customerid) from yinlian_customer group by customername,linkman,linkmantel)

三、結果

這樣就達到了我們的想法。

工作中涉及到了就記錄一下,省得忘記。

資料庫結構比較的SQL 語句

資料庫結構比較的sql 語句 sql server chk collist mssql select sysobjects.name syscolumns.name systypes.name syscolumns.length case syscolumns.isnullable when 1 t...

SQL SERVER 資料庫實用SQL語句

sql server 資料庫實用sql語句 1.按姓氏筆畫排序 select from tablename order by customername collate chinese prc stroke ci as 2.分頁sql語句 select from select row number o...

SQL SERVER 資料庫實用SQL語句

sql server 資料庫實用sql語句 1.按姓氏筆畫排序 select from tablename order bycustomername collate chinese prc stroke ci as 2.分頁sql語句 select from select row number ov...