當前位置:首頁 » 編程語言 » sql按某列刪除重復項
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql按某列刪除重復項

發布時間: 2023-07-10 09:56:23

A. sql刪除重復列

共享下我所知道的..
1.如果要查找重復的列(具體步驟我就不說了,看sql語句你應該可以明白過程)
select
*
from
表名
where
重復的欄位名in
(SELECT
重復的欄位名
FROM
表名
group
by
重復的欄位名
having
count(1)>1)
2.刪除重復的列保留最早插入的那個(使用這種方法必須要有標示欄位,你的好像沒有)...
DELETE
FROM
表名
WHERE
重復的欄位名
in
(SELECT
重復的欄位名
FROM
表名
group
by
重復的欄位名
having
count(1)>1)
and
你表中的第一個欄位
not
in
(select
min(你表中的第一個欄位)
from
表名
group
by
重復的欄位名
having
count(1)>1)
最後要告訴你的是:看仔細了:
上面的刪除方法是不能刪除你所要刪除的那列,因為你表中的數據沒有唯一的標示,建議你從新建張表,設一個自增長欄位..這樣這張表就不會出現你所遇到的問題了.

B. 如何在Sql中將重復的所有欄位刪除

用SQL語句,刪除掉重復項只保留一條
在幾千條記錄里,存在著些相同的記錄,如何能用SQL語句,刪除掉重復的呢
1、查找表中多餘的重復記錄,重復記錄是根據單個欄位(peopleId)來判斷
select
*
from
people
where
peopleId
in
(select
peopleId
from
people
group
by
peopleId
having
count(peopleId)
>
1)
2、刪除表中多餘的重復記錄,重復記錄是根據單個欄位(peopleId)來判斷,只留有rowid最小的記錄
delete
from
people
where
peopleName
in
(select
peopleName
from
people
group
by
peopleName
having
count(peopleName)
>
1)
and
peopleId
not
in
(select
min(peopleId)
from
people
group
by
peopleName
having
count(peopleName)>1)
3、查找表中多餘的重復記錄(多個欄位)
select
*
from
vitae
a
where
(a.peopleId,a.seq)
in
(select
peopleId,seq
from
vitae
group
by
peopleId,seq
having
count(*)
>
1)
4、刪除表中多餘的重復記錄(多個欄位),只留有rowid最小的記錄
delete
from
vitae
a
where
(a.peopleId,a.seq)
in
(select
peopleId,seq
from
vitae
group
by
peopleId,seq
having
count(*)
>
1)
and
rowid
not
in
(select
min(rowid)
from
vitae
group
by
peopleId,seq
having
count(*)>1)
5、查找表中多餘的重復記錄(多個欄位),不包含rowid最小的記錄
select
*
from
vitae
a
where
(a.peopleId,a.seq)
in
(select
peopleId,seq
from
vitae
group
by
peopleId,seq
having
count(*)
>
1)
and
rowid
not
in
(select
min(rowid)
from
vitae
group
by
peopleId,seq
having
count(*)>1)
6.消除一個欄位的左邊的第一位:
update
tableName
set
[Title]=Right([Title],(len([Title])-1))
where
Title
like
'村%'
7.消除一個欄位的右邊的第一位:
update
tableName
set
[Title]=left([Title],(len([Title])-1))
where
Title
like
'%村'
8.假刪除表中多餘的重復記錄(多個欄位),不包含rowid最小的記錄
update
vitae
set
ispass=-1
where
peopleId
in
(select
peopleId
from
vitae
group
by
peopleId

C. sql去除重復的項

distinct
b,a,c
------是將b
a
c完全相的記錄只取一條,你的數據里根本沒有完全相同的記錄,所以會全部輸出;
你要的數據可以用下面的sql
select
*
from
(select
t.*,row_number()
over(partition
by
b
order
by
b)
numid
from
table
t)
a
where
a.numid=1;

D. 用SQL語句刪除重復數

--聲明變數
Declare @ID Int, @PosNo Int
Declare @Table Table(
ID Int,
PosNo int
)
Declare cur Cursor Static READ_ONLY For
Select ID, PosNo
From 表
Order By EmpID, ID
Open cur
Fetch From cur Into @ID, @PosNo
While @@FETCH_STATUS = 0
Begin
If Exists(Select * From @Table Where PosNo = @PosNo)
Begin
Delete 表 Where ID = @ID
End
Else
Begin
Insert Into @Table (ID, PosNo)
Values (@ID, @PosNo)
End

Fetch Next From cur Into @ID, @PosNo
End
Close cur
DeAllocate cur

E. sql去除重復的項

首先你是要去除,也就是說刪除數據,還是只是查詢不重復數據,如果是刪除重復數據 就不該用select;暫且認為 你是查詢數據;
其次,你的意思應該是去除 b 列中重復的數據,但是你沒給定 確切的條件,比如,b列出現了重復數據,那你是要保留那一條呢,
再就是你那個查詢:select distinct b,a,c from table 的意思是將三列 都重復的去除,只有三列都重復了 才會去除。你這里的數據明顯 不存在三個列都重復的數據,所以查詢 出來的還是原 表中的數據。

F. 如何在SQL中刪除某一列的重復值

查詢不重復:

select*from表名where列1in(selectmin(列1)from表名groupby列3)

刪除重復數據:

謹慎使用

delete表名where列1notin(selectmin(列1)from表名groupby列3)

G. SQL 刪除列中的重復值

圖片很模糊看不清,你看看下面方法可以嗎

去除表a的重復值
user
mydb
--進入需要修改的資料庫
select
distinct
*
into
#tmp
from
[a]
--先將數據存入一張臨時表中,剔除重復項
truncate
table
[a]
--然後清空原表
insert
into
[a]
select
*
from
#tmp
--再將臨時表內容插入表a
drop
table
#tmp
--刪除臨時表

你的col001
是一樣的啊,你表裡有主鍵碼,或者自增欄位?

你表裡不算有重復值的啊,雖然前邊一樣,後邊欄位是不一樣的,這樣還算重復?

H. SQL怎麼去除某一列的重復項

假設存在一個主鍵ID,Name為重復列--下面這句可以查出所有的沒有重復的數據select * from 表 as a where ID=(select min(ID) from 表 where Name=a.Name) --根據上面這句就可以刪除所有重復項的數據delete from 表 where ID not in(select ID from 表 as a where ID=(select min(ID) from 表 where Name=a.Name))好了~

I. SQL怎麼去除某一列的重復項

假設存在一個主鍵ID,Name為重復列

--下面這句可以查出所有的沒有重復的數據

select
*
from

as
a
where
ID=(select
min(ID)
from

where
Name=a.Name)

--根據上面這句就可以刪除所有重復項的數據

delete
from

where
ID
not
in(

select ID
from

as
a
where
ID=(select
min(ID)
from

where
Name=a.Name)

)

好了~