`

MySQL一次删除两张表

阅读更多

今天遇到了同时删除两张表的问题,试了很多方法都没成功,如果在hibernate的话那就简单了直接使用级联就okay了,但用sql语句一时还是没做出来在网上找到了解决方法(我用的第三种方法):

商品表(product):id  name

图片表(image):id product_id name

对于这两张表,图片表里面关联了商品表的id属性,在我们删除商品的同时就要把它对应的图片信息也得删掉。对于这种情况在可以参照一下的delete语句:

1、delete from t1 where 条件
2、delete t1 from t1 where 条件
3、delete t1 from t1,t2 where 条件
4、delete t1,t2 from t1,t2 where 条件

前3者是可行的,第4者不可行。
也就是简单用delete语句无法进行多表删除数据操作,不过可以建立级联删除,
在两个表之间建立级联删除关系,则可以实现删除一个表的数据时,同时删除另一个表中相关的数据。


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中是可以的)

附:上述语句运行的环境 mysql 4.0.2以上

分享到:
评论

相关推荐

    在MySQL中同时查找两张表中的数据的示例

    在MySQL中,同时查找两张表中的数据是一种常见的需求,特别是在处理关联数据时。这可以通过使用联接(JOIN)操作来实现,将多个表的数据合并成一个结果集。在这个示例中,虽然没有直接使用JOIN,但通过存储过程展示...

    mysql 无限级分类实现思路

    MySQL 实现无限级分类是一种常见的数据库设计挑战,特别是在需要构建层级结构的数据模型时,例如网站导航菜单、组织架构或商品分类。以下将详细介绍三种常见的无限级分类实现方法,并分析其优缺点。 ### 1. 递归...

    JDBC连接Mysql数据库案例

    在这个案例中,我们有两张表,可能需要执行针对这些表的CRUD(创建、读取、更新、删除)操作。例如,创建新表、插入记录、更新特定行、以及删除数据。 8. **异常处理**: 在JDBC操作中,应始终处理可能出现的异常...

    非常好用的Mysql管理工具HeidiSQL

    总的来说,HeidiSQL是一个强大的数据库管理工具,它简化了MySQL和其他数据库的管理工作,并且提供了查看表数据大小等实用功能。通过理解其依赖的库文件,我们可以更好地了解其工作原理,从而更有效地使用这个工具。...

    MySQL命令大全

    MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...

    c# 更改不同服务器两个表保持一致

    4. **性能优化**:对于大量数据,可以考虑分批处理,避免一次性加载所有数据导致内存压力过大。同时,对比和操作数据时,可以使用索引来提升效率。 5. **定时任务**:为了实时保持数据一致,可以设置定时任务,定期...

    2023年9月最新MySQL面试题集合(包含详细答案).docx

    聚簇索引就是按照每张表的主键构造一棵 B+ 树,同时叶子节点中存放的就是整张表的行记录数据。在 InnoDB 中,只有主键索引是聚簇索引,如果没有主键,则挑选一个唯一键建立聚簇索引。如果没有唯一键,则 MySQL 自动...

    kettle全量多表数据同步

    - **检查表结构**: 确认MySQL中的表结构与Oracle中的表结构相同。 - **比较数据**: 使用SQL查询或其他工具来比较两个数据库中的数据是否一致。 - **修复错误**: 如果发现任何差异,需要及时修复这些错误。 #### 三....

    Mysql实验2.pdf

    event_1 每3秒执行一次插入操作,event_2 每30秒执行一次清除salesrecords表中的数据。通过设置globalevent_scheduler变量为ON,事件调度器被启用。 6. 触发器的使用: 实验创建了一个名为film_2_1的触发器,这个...

    记一次mysql根据.frm.ibd文件恢复数据

    记一次mysql根据.frm.ibd文件恢复数据 背景: 公司用的阿里云mysql 5.6数据库,阿里云的控制台上做了两天一备份的设置。当我发现我误操作drop了一张表之后,我从控制台上下载了备份的压缩包,解压之后拿到我drop的那...

    mysql 数据表中查找重复记录

    或者,如果你想删除重复记录,可以使用`DISTINCT`关键字创建一个新表,然后删除原始表,最后重命名新表为原始表名。 此外,为了提高性能,考虑对经常用于查找重复记录的字段创建索引,这将显著加快查询速度。但是,...

    mysql详细学习笔记

    当两个表进行连接查询且没有合适的连接条件时,会产生笛卡尔积现象,即两表的所有行都会相互组合一次。 **连接查询的分类** - **内连接**(INNER JOIN):返回两个表中满足连接条件的记录。 - **左连接**(LEFT ...

    mysql加锁分析

    - 当使用非聚簇索引进行查找时,InnoDB需要进行一次额外的“回溯”操作来获取实际的数据行,这被称为二次查询。 #### 2PL:两阶段锁(Two-Phase Locking) 两阶段锁是一种常用的并发控制技术,用于防止多个事务...

    本人整理的十一道Mysql面试题

    * 当一个从服务器连接主服务器时,它通知主服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。 MySQL 复制类型: 1. 基于语句的复制:在主...

    MySQL数据库开发规范

    - 每张表需要有注释,说明其作用或使用范围。 - 单个数据库中的表数量不应超过300个。 **字段的命名** - 字段名不得为数据库关键字。 - 字段名长度不得超过32位,多个单词可以用下划线连接。 - 字段命名需具有实际...

    MySql_增删改查语句

    在MySQL中,可以一次性地插入多行数据,这有助于提高效率,尤其是在处理大量数据时。 **示例1:** ```sql INSERT INTO tongxuelu (姓名, 地址, 电子邮件) SELECT SName, SAddress, SEmail FROM Students; ``` 该...

    数据库面试必备!mysql 面试 55题

    - **问题描述**:一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,再把 MySQL 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15? - **MyISAM 表的行为**: - 当表的...

    MySql操作类(源码).rar

    - 错误处理函数:如`getError()`,返回最近一次操作的错误信息。 `TMysql.cpp`中会实现这些函数的具体逻辑: 1. 在构造函数中,可能初始化成员变量,如设置默认的数据库连接参数。 2. `connect()`函数会使用`...

    (mysql面试题)MySQL中的优化技巧,如查询优化、索引优化及代码展示.txt

    例如,如果我们需要连接两张表来获取学生的个人信息和他们的课程成绩,那么应该为连接条件创建索引。 #### 2.3 删除不必要的索引 虽然索引可以加速查询,但是过多的索引也会增加数据插入、更新和删除操作的成本。...

Global site tag (gtag.js) - Google Analytics