根据一列的信息删除重复

问题描述 投票:0回答:3

我想根据公司ID消除重复。我不关心模型名称下的哪些记录将被删除/保留。

我有这个结果:

+------------+------------------+
| company id | model name       |
+------------+------------------+
|    1       | chevrolet camaro |
|    1       | chevrolet spark  |
|    1       | chevrolet cruze  |
|    2       | mercedes c class |
|    2       | mercedes E class |
+------------+------------------+

我想得到这些结果:

+------------+------------------+
| company id | model name       |
+------------+------------------+
|    1       | chevrolet camaro |
|    2       | mercedes c class |
+------------+------------------+

或者这些结果(关键是我不关心哪个型号名称会被淘汰):

+------------+------------------+
| company id | model name       |
+------------+------------------+
|    1       | chevrolet spark  |
|    2       | mercedes E class |
+------------+------------------+

我该怎么办?

mysql sql
3个回答
2
投票

你可以使用group by

select companyid, min(modelname) as modelname
from t
group b companyid;

0
投票

试试这个

ALTER IGNORE TABLE 'yourTableName' ADD UNIQUE ('company id');

参考:here


0
投票

我会尝试这种方法:

declare @tbl table (ID int, car nvarchar(100))
declare @tblTemp table (ID int, car nvarchar(100))
insert into @tbl(ID, car)
values
( 1 ,'chevrolet camaro'),
(1 ,'chevrolet spark'),  
(1 ,'chevrolet cruze'),  
(2 ,'mercedes c class'), 
(2 ,'mercedes E class'), 
(1 ,'chevrolet camaro'),
(1 ,'chevrolet spark'),  
(1 ,'chevrolet cruze'),  
(2 ,'mercedes c class'), 
(2 ,'mercedes E class')

insert into @tblTemp
select distinct  MAX(id), car from @tbl
group by car

delete from @tbl


insert into @tbl (car)
select car from @tblTemp

declare @i int  
  SELECT @i= ISNULL(MAX(id),0)  FROM @tbl


update @tbl
set id  = @i , @i = @i + 1
where id is null
select * from @tbl

SQL结果:enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.