从表中删除雇员名字相同的员工记录(需要最少保留一条记录)

表中数据:

执行语句:

mysql> delete from emp where empNO not in (select min(empNO) from emp group by ename);
ERROR 1093 (HY000): You can‘t specify target table ‘emp‘ for update in FROM clause

MySQL出现You can’t specify target table for update in FROM clause
这个错误的意思是不能在同一个sql语句中,先select同一个表的某些值,
然后再update这个表。
这个错误在oracle中不会出现!

修改语句后执行:OK
delete from emp where empNO not in
(
select *
from
(
select min(empNO)
from emp
group by ename
)
a);

时间: 2024-10-06 19:27:29

从表中删除雇员名字相同的员工记录(需要最少保留一条记录)的相关文章

Access数据库删除重复记录,只保留一条记录的做法

Access数据库删除重复记录,只保留一条记录的做法: 只保留id最小的记录方法: delete from [表名] where id not in (select min(id) from [表名] group by [带重复记录的字段名称]) 只保留id最大的记录方法: delete from [表名] where id not in (select max(id) from [表名] group by [带重复记录的字段名称])

MSSQL如何在没有主键的表中删除重复数据

为了对重复数据进行实验,下面建一个设计不太好(没有主键)表并插入了一些重复数据: create database testdb use testdb ; go create table DupsNoPK (Col1 int Null, Col2 char(5) Null ); go insert DupsNoPK(Col1,Col2) Values(1,'abc'), (2,'abc'), (2,'abc'), (2,'abc'), (7,'xyz'), (7,'xyz'); 为了验证表确实有重

12 表中删除重复项

以下代码实现了从表中删除重复项的功能,请选择其中空白行应填入的正确代码(D) template<typename T> void removeDuplicates(list<T> &aList) {     T curValue;     list<T>::iterator cur, p;     cur = aList.begin();     while (cur != aList.end())     {         curValue = *cur;

解决在mysql表中删除自增id数据后,再添加数据时,id不会自增1的问题

https://blog.csdn.net/shaojunbo24/article/details/50036859 问题:mysql表中删除自增id数据后,再添加数据时,id不会紧接.比如:自增id 1 2 3 4 现在删除4,就变成了 1 2 3 这时候,如果增加一条数据,会变成 1 2 3 5 上面5不是我们想要的结果,4才是理想的id,解决方法是,在删除4之后,执行下面的sql语句: ALTER TABLE table_name AUTO_INCREMENT = 1; 原文地址:http

MYSQL delete 从多人表中删除

语法 1. delete table_list_A from table_list_B where bool_expression; 从delete_table_list_A 删除 bool expression 为true 的行. 例子: 1. create table T1(ID int); create table T2(ID int); create table T3(ID int); 2. insert into T1(ID) values(1),(4),(5),(100); inse

InnoDB引擎,从大表中删除多行

官方建议: InnoDB Tables If you are deleting many rows from a large table, you may exceed the lock table size for an InnoDB table. To avoid this problem, or simply to minimize the time that the table remains locked, the following strategy (which does not

C# DataAdapter.Update() 无法更新数据表中删除的数据行

用DataAdapter.Update() 方法更新删除了部分DataRow 的 DataTable .但是数据库中的数据没有随着更新而变化. 原因:DataTable 删除 DataRow 时,使用的是DataTable.Rows.Remove(DataRow ) 或 DataTable.Rows.RemoveAt(DataRowIndex) 方法. 解决方法:使用 DataTable.Rows[rowIndex].Delete() ; 方法删除数据. 详解如下: DataAdapter.Up

同一张表中删除重复数据

同一张表中,假设以两个字段做唯一业务,这两个字段分别为key1,key2, 则以这两个字段为唯一 DELETE tablename FROM t_price_insignt_profit , ( SELECT min(id) id, key1, key2 FROM tablename GROUP BY key1, key2 HAVING count(*) > 1 ) t2 WHERE tablename .key1=t2.key1 AND tablename .key2=t2.key2 AND

寻找数据表中一列相同并且存在另一列有不同值的记录

假如我有一张表  T  其中有两列 ,如下图所示: A B 1 3 1 3 2 5 2 4 3 7 3 7     其中,A列值为1的对应B列的值都为3,A列值为为2对应B列的值有两个,一个是5,一个是4,我们的目的就是列出  2  5,2 4 这两条记录. 第一种方法,巧妙的采用了max 和min函数,当我们使用A列分组后,如果 max(B)=min(B),那么B列的所有值肯定是相同的.反之则是我们需要寻找的记录.SQ如下: select * from T where T.A in (sele