mysql中多表删除其中ID相同记录的方法_Mysql

 

问题源自一个5年前的百度知道回答,刚看到这个问题时我刚上班21天,遂根据自己的那一丁点经验和临时操作检验做出了当时认为正确的回答:

 

但很快就被人否定,我猜主要原因就是我说的最后一句话过于绝对,但由于自己太相信自己了,而且有一大堆理由支撑着,所以没有深入研究。

最近又有网友评论了我的这个回答,我才开始查了一下百度,发现Mysql4.0以上版本已经可以通过一条delete删除多个表的数据了。
看来我确实在误人子弟了,只能说声抱歉,好在楼主没有选我的答案,要不然罪过大了。

最后总结一下:

MySql4.0以上支持delete多个表删除 delete t1,t2 from t1.refid=t2.id

SqlServer到2008为止还不支持

Oracle几乎不用,不确定,网上查到的是不支持delete删除多个表的数据

对于不支持delete删除多表的数据库,可以通过做一些前期工作,如触发器、外键。

可以实现”一条delete”删除多个表里的数据。

时间: 2024-12-26 06:57:36

mysql中多表删除其中ID相同记录的方法_Mysql的相关文章

MySQL中Union子句不支持order by的解决方法_Mysql

本文实例讲述了MySQL中Union子句不支持order by的解决方法.分享给大家供大家参考,具体如下: 我对DB知之甚少,这问题只在MySQL遇到,不知道别的DBMS是不是也如此. 问题是这样的,我打算在一个表里获得与某一行记录相邻的两行,并且想通过union一起取出来,所以这么写: select id,title from subjects where id>#some_id# order by id limit 1 union select id,title from subjects

MySQL中修改表结构时需要注意的一些地方_Mysql

MySql 在修改表结构的时候可能会中断产品的正常运行影响用户体验,甚至更坏的结果,丢失数据.不是所有的数据库管理员.程序员.系统管理员都非常了解Mysql能避免这种情况.DBA会经常碰到这种生产中断的情况,当升级脚本修改了应用层和数据库层,或者缺乏经验的管理员.开发在不是很了解Mysql内部工作机制的情况下修改了规范文件. 真相是: 直接修改表结构的过程中会锁表(在5.6版本之前) 在线的数据定义语言在5.6版本不总是在线的而且也会锁表 就算使用Percona工具包(在线修改定义文件)也会有若

提高MySQL中InnoDB表BLOB列的存储效率的教程_Mysql

首先,介绍下关于InnoDB引擎存储格式的几个要点: 1.InnoDB可以选择使用共享表空间或者是独立表空间方式,建议使用独立表空间,便于管理.维护.启用 innodb_file_per_table 选项,5.5以后可以在线动态修改生效,并且执行 ALTER TABLE xx ENGINE = InnoDB 将现有表转成独立表空间,早于5.5的版本,修改完这个选项后,需要重启才能生效: 2.InnoDB的data page默认16KB,5.6版本以后,新增选项 innodb_page_size

浅谈MySQL中优化sql语句查询常用的30种方法_Mysql

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from

MySQL中日期和时间戳互相转换的函数和方法_Mysql

① 时间戳转换成日期 复制代码 代码如下: FROM_UNIXTIME 例如: 数据表中 invest_time 存储的是时间戳,如 1429063399 使用 FROM_UNIXTIME 可以把时间戳转换为日期: 复制代码 代码如下: select FROM_UNIXTIME(invest_time,'%Y年%m月%d') from crm_invest_apply 执行结果: ② 把日期转换为时间戳,和 FROM_UNIXTIME 正好相反 复制代码 代码如下: UNIX_TIMESTAMP

MySQL中使用load data命令实现数据导入的方法_Mysql

使用方式如下: 复制代码 代码如下: mysql>load data local infile "D:/ab.txt" into table mytbl(name,age); 使用上述的命令就可以将D:/ab.txt文件的内容导入到表mytbl中,其中name和age是表mytbl的字段,对应ab.txt文件中每行的数据.如果编译安装mysql时没有指定 –enable-local-infile,那么在使用上述命令时会报如下错误: 复制代码 代码如下: ERROR 1148 (4

详解MySQL中的死锁情况以及对死锁的处理方法_Mysql

当多个事务同时持有和请求同一资源上的锁而产生循环依赖的时候就产生了死锁.死锁发生在事务试图以不同的顺序锁定资源.以StockPrice表上的两个事务为例: 事务1 START TRANSACTION; UPDATE StockPrice SET close = 45.50 WHERE stock_id = 4 and date = '2002-05-01'; UPDATE StockPrice SET close = 19.80 WHERE stock_id = 3 and date = '20

在MySQL中如何有效的删除一个大表?

在MySQL中如何有效的删除一个大表? Oracle大表的删除:http://blog.itpub.net/26736162/viewspace-2141248/ 在DROP TABLE 过程中,所有操作都会被HANG住.这是因为INNODB会维护一个全局独占锁(在table cache上面),直到DROP TABLE完成才释放.在我们常用的ext3,ext4,ntfs文件系统,要删除一个大文件(几十G,甚至几百G)还是需要点时间的.下面我们介绍一个快速DROP table 的方法: 不管多大的

MySQL中管理表和索引的相关语句

1. 创建表 MySQL中创建表是通过create table语句实现的,语法这里就不介绍了,非常复杂,可以去官网上查询,所幸的是, 我们并不需要记住所有的选项,因为大部分都采用默认即可,下面介绍几个比较常用的选项. 1)指定存储引擎 默认的存储引擎由default-storage-engine指定,如果没有指定,则为MyISAM,如果建表时,你不想使用默认的存储 引擎,可以通过如下语句实现: create table table_name ( ... ) engine=engine_name;