MySQL删除重复项

时间:2014-04-07 08:25:17

标签: mysql sql

有一张表格:

NAME |    DATE    | INFO  | SPEC
Bob  | 01.01.2010 | Text1 | Student
Ann  | 02.02.2020 | Text2 | Secretary
Bob  | 01.01.2010 | Text1 | Student
John | 03.03.2030 | Text3 | Tester
Bob  | 01.01.2010 | Text1 | Student

如何获得这样的表格(请求中):

NAME |    DATE    | INFO  | SPEC
Bob  | 01.01.2010 | Text1 | Student
Ann  | 02.02.2020 | Text2 | Secretary
John | 03.03.2030 | Text3 | Tester

PS:这些变体不起作用:

SELECT DISTINCT Name, Date, Info, Spec FROM Table
SELECT DISTINCT * FROM Table
SELECT Name, Date, Info, Spec FROM Table GROUP BY Name, Date, Info, Spec
SELECT * FROM Table GROUP BY Name, Date, Info, Spec

5 个答案:

答案 0 :(得分:0)

您需要使用DISTINCT关键字

尝试这样的查询:

SELECT DISTINCT * FROM table

答案 1 :(得分:0)

使用

SELECT DISTINCT * FROM MyTable

但是,你最好摆脱表中的重复项。请参阅Remove duplicate rows in MySQL了解具体方法。

答案 2 :(得分:0)

使用DISTINCTFrom the docs

  

ALL和DISTINCT选项指定是否应返回重复的行。 ALL(默认值)指定应返回所有匹配的行,包括重复行。不同   指定从结果集中删除重复的行。

所以使用这样的东西:

SELECT DISTINCT * from tablename;

答案 3 :(得分:0)

如果存在除提及列之外的主键,则可以使用此代码

delete from myTable where pkID not in
(
select min(pkID) from myTable
group by NAME,DATE ,INFO ,SPEC
)

假设 pkID 是主键

如果没有除这4列之外的其他列,则按照以下方式执行:使用临时表。

Create table #tmp
(
    NAME varchar(50),
    DATE date,
    INFO varchar(50),
    SPEC varchar(50)
)
insert into #tmp
select distinct * from myTable


delete from myTable

insert into myTable
    select * from #tmp

代码是SQL Server,希望它可以帮到你。

答案 4 :(得分:0)

在您的选择查询中使用DISTINCT