今天碰到的一个挺有意思的笔试题
数据表table1建表语句如下代码,里面有很多pid+coin相同的行,请你编写sql删除这些重复的行

create table table1 (
  id BIGINT PRIMARY KEY,
  pid INT,
  coin INT,
  INDEX(pid,coin)
  );
  ALTER TABLE table1 DROP PRIMARY KEY;
ALTER TABLE table1 MODIFY COLUMN id BIGINT AUTO_INCREMENT PRIMARY KEY;
insert into table1(pid,coin) values(1,1),(1,1),(2,2),(2,2),(3,2),(3,2);

有很多pid + coin相同的行,如何删除掉?

delete t1 from table1 t1 INNER JOIN table1 t2 on t1.id < t2.id and t1.pid = t2.pid and t1.coin = t2.coin;

后面问ai,给了个更好的


delete from table1 where id not in (
SELECT * FROM (
    SELECT MIN(id) 
    FROM table1
    GROUP BY pid, coin
  ) tmp
  );