-2

表格示例

id 名称 值 1 值 2
 1 迪斯科号码 1 0
 2 迪斯科号码 2 0
 3 奶酪数量 3 0
 4 数字 4 0
 5 东西 数字 5 0

我想要一个代码来删除所有具有重复名称的行,并只留下唯一值。

结果应该是

id 名称 值 1 值 2
 1 迪斯科号码 1 0
 3 奶酪数量 3 0
 4 数字 4 0

我有这个代码

delete from your_table 
 where id not in 
select * from 
( select min(id) 
   from your_table 
  group by user_id, badge_id ) x ) 

但它不起作用

4

1 回答 1

0

你可以用JOIN

DELETE t FROM table1 t JOIN
(
  SELECT name, MIN(id) id
    FROM table1
   GROUP BY name
) q 
    ON t.name = q.name 
   AND t.id <> q.id;

这是SQLFiddle演示

或使用子查询

DELETE FROM table1
 WHERE id NOT IN
(
  SELECT id
    FROM
  (
    SELECT MIN(id) id
      FROM table1
     GROUP BY name
  ) q
);

这是SQLFiddle演示

于 2013-11-10T23:32:14.463 回答