Mysql删除多表及多表记录sql语句

批量删除多表

删除所有pre_前缀的表

 代码如下 复制代码

SELECT   CONCAT( 'drop table ',table_name,'; ')   FROM   information_schema.tables where

information_schema.tables.TABLE_NAME LIKE 'pre_%' ;

删除所有pre_前缀的表 并且 不删除pre_uc前缀的表

 代码如下 复制代码

SELECT   CONCAT( 'drop table ',table_name,'; ')   FROM   information_schema.tables WHERE

information_schema.tables.TABLE_NAME LIKE 'pre_%' AND information_schema.tables.TABLE_NAME NOT LIKE

 'pre_uc%';将得到的结果复制下来,再重新执行

删除多表同的数据

MySQL数据库中,如果需要多张表同时删除数据,应该怎么做呢?下面就将为您介绍MySQL中多表删除的方法,希望对您有所启迪。

1、从数据表t1中把那些id值在数据表t2里有匹配的记录全删除掉

 代码如下 复制代码
DELETE t1 FROM t1,t2 WHERE t1.id=t2.id 或DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id

2、从数据表t1里在数据表t2里没有匹配的记录查找出来并删除掉

 代码如下 复制代码

DELETE t1 FROM t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL 或

DELETE FROM t1,USING t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL

3、从两个表中找出相同记录的数据并把两个表中的数据都删除掉

 代码如下 复制代码
DELETE t1,t2 from t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t1.id=25

注意此处的delete t1,t2 from 中的t1,t2不能是别名

如:

 代码如下 复制代码
delete t1,t2 from table_name as t1 left join table2_name as t2 on t1.id=t2.id where table_name.id=25

 在数据里面执行是错误的(MYSQL 版本不小于5.0在5.0中是可以的)

上述语句改写成

 代码如下 复制代码
delete table_name,table2_name from table_name as t1 left join table2_name as t2 on t1.id=t2.id where table_name.id=25

 在数据里面执行是错误的(MYSQL 版本小于5.0在5.0中是可以的)

删除表中多余的重复记录,只留有rowid最小的记录(单字段)

 代码如下 复制代码
Delete From 表
Where 字段1 In (Select 字段1 From 表 Group By 字段1 Having Count(字段1) > 1) And
   Rowid Not In (Select Min(Rowid) From 表 Group By 字段1 Having Count(字段1) > 1)

删除表中多余的重复记录,只留有rowid最小的记录(多个字段)

 代码如下 复制代码
Delete From 表 a
Where (a.字段1, a.字段2) In (Select 字段1, 字段2 From 表 Group By 字段1, 字段2 Having Count(*) > 1) And
   Rowid Not In (Select Min(Rowid) From 表 Group By 字段1, 字段2 Having Count(*) > 1)

    
5.删除多于的重复记录(单个字段,多个字段)

 代码如下 复制代码
delete from table where id not in ( select min(id) from table group by name)
或者
delete from table where id not in ( select min(id) from table group by 字段1,字段2)

6.删除多余的重复记录(单个字段,多个字段)

 代码如下 复制代码
delete from table where id in ( select max(id) from table group by name having count(*)>1)
时间: 2024-11-01 06:54:11

Mysql删除多表及多表记录sql语句的相关文章

Oracle 查询与删除表中的重复记录sql语句

方法:  代码如下 复制代码 group by  XX having count(*)>1,rowid,distinct,temporary table,procedure 下面语句可以查询出那些数据是重复的:  代码如下 复制代码 select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) > 1 将上面的>号改为=号就可以查询出没有重复的数据了. 想要删除这些重复的数据,可以使用下面语句进行删除  代码如下 复制代

mysql把一个表某个字段的内容复制到另一张表的某个字段的SQL语句写法

 有时候,我们需要复制某个字段一整列的数据到另外一个新的字段中,或是需要把某个表的某个字段的值跨表复制到另一个表中的某个字段,本文就罗列了一些SQL语句写法,需要的朋友可以参考下   需求:把一个表某个字段内容复制到另一张表的某个字段.   实现sql语句1:     代码如下: UPDATE file_manager_folder f1 LEFT OUTER JOIN file_manager_folder f2      ON f1.name = f2.name AND f2.parentI

删除重复记录 sql语句

删除重复记录 sql语句 本教程为你提供了二款关于删除重复记录的sql语句代码.一个利用where in查询重复记录再实现删除,一个是用inner join来实例删除重记录. */ //方法一 delete from tablea where title in (select a.title from tablea a join tableb b on a.title = b.title) //方法二 delete a.* from tablea a inner join tableb b on

sqlserver查询所有表的行数的sql语句

原文:sqlserver查询所有表的行数的sql语句   select object_name(id),rowcnt from sysindexes where indid<2 and objectproperty(id,'ismsshipped')=0 order by rowcnt desc select a.name, b.rows from sysobjects a inner join sysindexes b on a.id = b.id where a.type = 'u' and

sql 查询指定日期时间记录sql语句与查询实例

sql 查询指定日期时间记录sql语句与查询实例  首先创建一个表abc结构如下    CREATE TABLE `cc`.`loup` (  `id` INT( 4 ) NOT NULL AUTO_INCREMENT ,  `datetimes` INT( 4 ) NULL ,  `ipaddress` VARCHAR( 20 ) NULL ,  PRIMARY KEY ( `id` )  ) ENGINE = MYISAM    再批量插入数据    INSERT INTO `loup` (

PHP+Mysql实现多关键字与多字段生成SQL语句的函数_php技巧

本文实例讲述了PHP+Mysql实现多关键字与多字段生成SQL语句的函数的方法.分享给大家供大家参考.具体实现方法如下: 先看实例: 复制代码 代码如下: $keyword="1 2 3"; echo $sql=search($keyword,"enter_gongyin_pic","a+b+c"); //函数生成,没有LIMIT,没有ORDER BY 生成: 复制代码 代码如下: SELECT * FROM `enter_gongyin_pic

记录sql语句的执行记录,用于分析

原文:记录sql语句的执行记录,用于分析 SET STATISTICS PROFILE ONSET STATISTICS IO ONSET STATISTICS TIME ONGO --这之间是要执行的脚本select * from [UserTable]GO --这之间是要执行的脚本SET STATISTICS PROFILE OFFSET STATISTICS IO OFFSET STATISTICS TIME OFF 可以分析出cpu开销,IO开销,时间开销 备忘

查询,删除,插入,查询,排序sql语句

查询,删除,插入,查询,排序sql语句 我们这里提供了查询,删除,插入,查询,排序 总数 求和 平均 最大 最小sql语句哦. 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from ta

mysql中删除重复记录sql语句

删除重复记录方法一: 1. 新建一个临时表  代码如下 复制代码 create table tmp as select * from youtable group by  name(name为不希望有重复的列) 2. 删除原来的表  代码如下 复制代码 drop table youtable 3. 重命名表  代码如下 复制代码 alter table tmp rename youtable 但是这个方法有个问题,由临时表转变过来的最终表,其表结构会和原来的不一致,需要手工更改.这个问题,待解决