- 浏览: 1327891 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (732)
- Java_about (146)
- Spring_Hibernate_Struts_OpenSource (27)
- linux_unix (62)
- life_sth (22)
- js_css_html_xml_nodejs (69)
- design_pattens (1)
- Perl (8)
- php_ecshop (4)
- DB_Mysql_Oracle_Informix_SqlServer (43)
- JSTL (8)
- Testing_自动化测试 (42)
- DB_ID_UUID (4)
- SEM_SEO (1)
- english_study_improvement (4)
- SVN_Git (9)
- WebService_SOA_CloudComputing (3)
- E-Commerce (1)
- Lucene_Solr (7)
- others (2)
- Regex (2)
- tomcat_jetty (8)
- zeroc-ice (1)
- java_excel (5)
- ant_maven_gradle (5)
- Unity_VR_AR_C# (2)
- jmeter (1)
- XPath_dom4j (1)
- Ruby_and_Rails (68)
- write_a_rails (17)
- manage_and_team (1)
- getting_real (1)
- ubuntu (20)
- git_and_git_flow (7)
- TODO (1)
- PM_design (2)
- Python_and_Django (8)
- NoSql_mongo_redis (24)
- C/C++ (3)
- vi_vim_gvim (0)
- c#_.Net_windows编程_dll (10)
- Php_and_Yii (9)
- Android_IOS (31)
- Mysql (5)
- sa_运维_network_硬件 (37)
- lua (2)
- c_cpp_VisualStudio (21)
- 硬件-RM-Arduino (6)
最新评论
-
shenkun58:
...
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
liaojia1:
正解,感谢
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
flingfox63:
谢谢分享,电脑上有IPV6,导致了Guard启动不了……
ruby错误解决: Address family not supported by protocol - connect(2) -
c39274936:
s = "hello_world_ruby" ...
驼峰格式和下划线格式转换_translation between camel and snake format -
yfj300:
学习了学习了学习了学习了
硬盘基本知识(磁道、扇区、柱面、磁头数、簇、MBR、DBR)
MySQL 一条SQL语句删除重复记录
不正确的写法一。
delete from t_user where id in(select max(id) as id from t_user group by username );
但是mysql不支持这个写法(别的db是不是支持,没有测试),报错:
ERROR 1093 (HY000): You can't specify target table 't_user' for update in FROM clause
原因大概是删除的同时,不能查询自己,跟程序的foreach循环过程中不能删除类似
不正确的写法二。
delete t_user
from t_user as t_user, (select id from t_user group by username having count(*) > 1) as t2
where t_user.id=t2.id;
这个的原理是删除重复的,但这个算法只对重复个数是2的管用,一旦重复数是3等,就不能惯用了。
正确的方法一。
--这个算法的原理是:group但不会count,这样在temp_table中的就是最终要留下来的结果,把其他的删除就ok了
--另外,这里利用了temp table,避免了上面foreach不能删除的问题
delete t_user
from t_user
where id not in (
select id from (select id from t_user group by username) as temp_table
);
正确的方法二。
算法同上,只是可以不用group,用distinct
略
例子:
--表
drop table t_user;
create table t_user(
id int(5) not null auto_increment,
username varchar(10),
age int(3),
primary key(id)
);
--插入
insert into t_user(username,age) values('aaa',20);
insert into t_user(username,age) values('aaa',20);
insert into t_user(username,age) values('bbb',20);
insert into t_user(username,age) values('bbb',20);
insert into t_user(username,age) values('bbb',20);
insert into t_user(username,age) values('ccc',20);
insert into t_user(username,age) values('ccc',20);
insert into t_user(username,age) values('ccc',20);
insert into t_user(username,age) values('ccc',20);
insert into t_user(username,age) values('e',10);
insert into t_user(username,age) values('f',5);
--删除
delete t_user
from t_user
where id not in (
select id from (select id from t_user group by username) as temp_table
);
--再查看
mysql> select * from t_user;
+----+----------+------+
| id | username | age |
+----+----------+------+
| 55 | aaa | 20 |
| 57 | bbb | 20 |
| 60 | ccc | 20 |
| 64 | e | 10 |
| 65 | f | 5 |
+----+----------+------+
5 rows in set (0.00 sec)
--------END EOF 完毕-------
O
K
O
K
O
K
发表评论
-
【Mysql】Windows下data文件迁移到别的磁盘,win10_win7开发机磁盘满了怎么办?
2022-01-04 17:21 241= = = 网上的处理办法是: 1备份数据。 ... -
【转】MySQL数据库之数据类型BOOL/BOOLEAN与TINYINT测试总结
2020-04-12 15:54 697= = = (一) 数据类型测试 (1). 布尔类型 ... -
IDEA连接mysql又报错!Server returns invalid timezone.
2020-04-08 11:10 431= 解决方法: 在sql ... -
mysql.sock作用-解决mysql.sock直接找不到了的问题-重新生成mysql.sock
2018-04-11 14:48 4936= = = mysql.sock作用-解决mysql. ... -
Mybatis之foreach批量insert返回主键id列表_Jdbc批量插入并返回主键id列表
2017-01-17 17:35 24712016/05/14 14:14 然而官方已经修复了 @a ... -
Mysql的wait_timeout解决-MySQL查看和修改wait_timeout
2015-07-23 19:45 6251mysql存在一项属性“wait_timeout”, ... -
Ubuntu_Mysql_移动数据存储位置_软连接失败_软连接var目录失败
2013-06-10 23:48 2234linux系统对权限的控制很好,但也成为各种问题的多 ... -
DB-Mysql-Can't connect to local MySQL server through socket '/var/run/mysqld/mys
2013-04-24 11:03 1663错误病症: Error: Can't connec ... -
(摘)DB_MySql_命令行_SQL结果_导出到文本_方法小结
2012-05-20 00:01 1517点评:第3个方法很好阿! 有时候需要把数据 ... -
MySQL_使用group_distinct后_如何得到总记录数(行数)
2012-03-22 19:48 2052MySQL_使用group_distinct ... -
MySQL_导入导出工具mysqlimport用法详解
2011-09-30 17:00 2946MySQL_导入导出工具mys ... -
Mysql_mysqldump命令错误解决_
2011-09-30 16:16 1594Error|错误: mysqldump: Got er ... -
Mysql_不能用ip链接_能用localhost127.0.0.1链接_Ubuntu
2011-09-30 13:57 2952Mysql_不能用ip链接_能用localhost 和 ... -
Mysql_字符集设置
2011-09-20 22:48 1284Linux Ubuntu ubuntu上mys ... -
Mysql_字符串函数大全
2011-08-23 16:41 1135如果结果的长度大于服务器参数max_allowed ... -
数据库sql语句的exists总结
2011-08-11 18:53 4021数据库sql语句的exists总 ... -
查看memcache状态及缓存命中_持续整理中
2011-08-04 15:44 1939先占个位置: 之前是在使用网上有人用 ... -
Sql_拾疑_整理_搜集
2011-08-03 19:24 1189MYSQL是目前用的,如有变化,会说明。 #Union ... -
Mysql_AddOrUpdate_A better way to add or update MySQL rows
2011-03-03 13:11 1489有时候,这个东西能省略不少事情~ INSERT I ... -
Mysql_关联表update
2011-03-02 21:34 3083Mysql中的update语句,可以关联表,可以同时更新几张表 ...
相关推荐
标题“SQL.rar_labview mysql_mysql labview_sql”和描述“在labview中实现数据库MySQL调用的节点函数”指向一个关于使用LabVIEW(Laboratory Virtual Instrument Engineering Workbench)与MySQL数据库进行交互的...
MySQL常用SQL语句 MySQL是一种关系型数据库管理系统,使用SQL(Structured Query Language)语言来管理和操作数据库。下面是MySQL中一些常用的SQL语句: 创建、删除和基本查询 * 显示数据库:`show databases;` *...
【MySQL数据库】一条SQL语句执行慢的问题是一个复杂的议题,涉及到多个方面,包括数据库的内部机制、事务处理、索引优化以及SQL语句的设计。下面将深入解析导致SQL执行变慢的主要因素。 **一、执行偶尔变慢** 1. *...
在IT领域,尤其是在数据库管理与开发中,MySQL作为一款广泛使用的开源关系型数据库管理系统,其SQL语句的应用显得尤为重要。本文将围绕“mysql_sql语句”这一主题,深入解析从数据库创建到数据管理的各项关键操作,...
更新和删除操作类似,只需构建对应的SQL语句并调用`mysql_query()`。例如,更新一条记录: ```c++ const char* update_data_sql = "UPDATE students SET age = 30 WHERE name = 'John Doe'"; if (mysql_query(conn,...
在这个例子中,我们首先通过 `BeginTrans` 开始一个事务,然后依次执行多条 SQL 插入语句,最后使用 `CommitTrans` 提交事务。如果在执行过程中出现异常,则使用 `RollbackTrans` 回滚事务。 ##### 3. 更新批处理 ...
4. **执行SQL语句**:连接建立后,我们可以创建游标对象,通过游标执行SQL语句,例如查询、插入、更新和删除操作。比如执行一个简单的查询: ```python cursor = conn.cursor() cursor.execute("SELECT * FROM ...
MySQL SQL语句练习题及答案 本资源提供了 MySQL SQL 语句的练习题及答案,涵盖了创建表、插入数据、删除数据、更新数据、查询数据等多方面的知识点。 一、创建表 在 MySQL 中,创建表使用 CREATE TABLE 语句。...
sql 查出一张表中重复的所有记录数据 1.表中有id和name 两个字段,查询出name重复的所有数据 select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1) 2、...
根据提供的文件信息,我们可以归纳出一系列关于MySQL的基本操作与概念,包括如何创建表格、定义不同类型的字段、设置主键、外键以及各种约束等。接下来将详细解释这些知识点。 ### 创建表格 #### 示例1:创建学生...
本代码,用python语句,实现了一次插入多条sql语句。希望能对大家带来帮助。
MySQL 是一种广泛使用的关系数据库管理系统,SQL 语句是其核心组成部分。今天,我们将介绍六个有用的 MySQL SQL 语句,帮助您更好地使用 MySQL 数据库。 1. 计算年数 计算年数是日常生活中常见的问题,例如,根据...
在MySQL数据库中,查询最近一条记录通常涉及到时间戳或者某个排序字段。本文主要探讨了三种不同的SQL语句来实现这一目标,从效率低下的方法到更优化的解决方案,特别是针对大量数据的情况。 首先,最简单但效率最低...
在项目中,分页查询通常结合`JOIN`、`WHERE`等其他SQL语句一起使用,以满足更复杂的需求。例如,可能需要根据用户条件过滤数据后再分页,或者在多个表之间联合查询时进行分页。`www.pudn.com.txt`可能是某个网站上...
"mysql 一条语句删除多表" 的主题就是关于如何通过单个SQL语句来删除关联的多个表的数据,从而节省数据库连接资源和提高执行效率。下面将详细解释这一技术及其背后的原理。 首先,我们要理解的是SQL语言中的“JOIN...
这条语句使用 `DATEPART` 函数将日期转换为季度,然后比较当前日期的季度减去一个季度以获取上季度的记录。 查询本年记录 MySQL 中,您可以使用以下语句查询本年记录: ```sql SELECT * FROM ht_invoice_...
在C语言中,使用MySQL接口执行SQL语句通常涉及以下步骤: 1. 初始化:创建一个MYSQL结构体实例,初始化连接参数(如主机名、用户名、密码和数据库名)。 2. 连接:使用`mysql_real_connect()`函数建立到MySQL服务器...
例如,插入一条新用户记录: ```cpp const char* insert_data_sql = "INSERT INTO users (name) VALUES ('John Doe')"; if (mysql_query(conn, insert_data_sql)) { cerr << "Error: " << mysql_error(conn) ; } ...
与`REPLACE`选项不同,`IGNORE`选项在遇到重复记录时不会删除旧记录,而是直接跳过这条记录,继续处理下一条记录。这适用于那些不希望因为重复记录而中断数据导入场景。 使用`IGNORE`选项的命令如下: ```sql LOAD...
标题“MySQL 查询重复内容只显示一条”涉及到的是在MySQL数据库中如何处理重复数据的问题。在数据分析或数据存储过程中,有时我们需要找出并处理重复的记录,只保留一条作为代表。这通常可以通过聚合函数和分组来...