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中是可以的)
分享到:
相关推荐
假设我们有一个名为`MyTable`的表,想删除ID为1的记录: ```vb Dim conn As New SqlConnection("Your Connection String") Dim cmd As New SqlCommand("DELETE FROM MyTable WHERE ID = @id", conn) cmd....
创建一个顺序表,首先需要定义一个足够大的数组来存储元素。在静态数组的环境中,数组的大小在创建时就必须确定,因此需要预先估计可能的最大元素数量。一旦数组创建,我们就可以开始向其中添加元素。在顺序表中,...
这种方法通过创建一个临时表,然后将原表中的去重数据插入到临时表中,最后用临时表中的数据替换原表。 1. **创建临时表并插入去重数据**: ```sql CREATE TABLE temp_table AS (SELECT DISTINCT * FROM original...
批量更新涉及到更新一张表的同时,可能需要根据关联条件更新另一张表。假设需要更新`emp`表中所有属于'ACCOUNTING'部门的员工的薪水,可以使用如下SQL语句: ```sql UPDATE emp SET sal = sal * 1.1 WHERE deptno ...
- 合并:两个有序链表的合并通常采用迭代或递归方式,比较每个链表头部元素,较小的元素作为新链表的头部,直至其中一个链表为空,然后将另一个链表附加到结果链表上。 - 倒置:链表的倒置可以通过三次遍历来实现...
然而,在解决了`argument$`表的问题后,当再次尝试删除操作时,可能会遇到另一个错误:ORA-00604和ORA-38301,这表明对象存在于回收站中,不允许执行DDL/DML操作。 #### 解决回收站中的对象问题 1. **清除回收站**...
sqlserver 循环临时表插入数据到另一张表 -- 声明变量 DECLARE @SupCode as varchar(100), @ProdCode as varchar(50), @PackLayer as varchar(50), @CodeStatus as varchar(50), @ProductId as varchar(50), @...
假设我们需要彻底删除一个名为`original_tableName`的表及其索引`original_indexName`,并清空整个回收站,可以按照以下步骤操作: 1. 彻底删除表: ```sql PURGE TABLE original_tableName; ``` 2. 彻底删除表...
由于顺序表是有序的,可以采用双指针法,一个指针从头开始,另一个指针跟随前者,用于更新有效元素的位置: ```c int i = 0, j = 0; while (i 顺序表->size) { if (顺序表->data[i] || 顺序表->data[i] > t) { ...
例如,要删除 "Persons" 表中姓为 "Adams" 的行,并将删除的行数记录到另一个表中,可以使用以下语句: ```sql DELETE FROM Persons WHERE LastName='Adams'; INSERT INTO DeletedPersons (LastName) SELECT ...
如果一个表A中有外键引用另一个表B的主键,那么在删除表B之前,我们必须先删除或解除表A中的外键约束,否则会触发数据库的约束错误,阻止表的删除。 为了自动删除所有表,首先要识别出有外键约束的表,并按逆序依赖...
首先,使用 `DROP TABLE` 删除原始表,然后使用 `CREATE TABLE` 语句创建一个同名的新表。这个新表可以是与原表相同的结构,也可以是修改后的结构。示例如下: ```sql DROP TABLE 表名; CREATE TABLE 表名 LIKE 原...
如果需要根据所有字段判断重复,可以创建一个新的临时表或副本表,然后插入唯一记录: ```sql -- 创建临时表 SELECT * INTO #tempTable FROM table DELETE FROM #tempTable INSERT INTO #tempTable SELECT * ...
在MySQL数据库中,有时我们需要根据一个表的数据来更新另一个表中的对应字段,这通常涉及到表间的关联操作。本文将详细讲解三种不同的方法来实现这个功能,适用于不同的场景和需求。 ### 方法1:基于JOIN的更新 ``...
4. 外键:外键是表中的字段,引用另一个表的主键,用于建立两个表之间的关系。外键约束确保了数据的一致性和参照完整性。 5. 索引:索引是数据库为了加速查询而创建的一种数据结构。它使得数据检索更快,但会占用...
在IT行业中,数据库迁移是一项常见的任务,特别是在Java开发中,我们经常需要将数据从一个数据库迁移到另一个数据库,比如从测试环境迁移到生产环境。这个过程不仅涉及数据的复制,还包括了数据库结构(如表、索引等...
Excel表格,想以其中某一列为索引,查找另一个表格中同样索引的行,找到该行的某个内容复制到原来的表格指定的位置中。还可以删除原有表格中重复的内容。应用场景非常多,比如:利用学生学号和考场分配表查找学生...
这展示了如何根据一个表中的信息来删除另一个表中的数据。 ```sql DELETE FROM SC WHERE CNO = (SELECT CNO FROM C WHERE CNAME = '数据库应用') ``` - **实例2**:删除所有女同学的成绩。这里,子查询从...
本示例中的"Kettle同步数据库所有的表数据到其他库.rar"是一个具体的应用场景,即利用Kettle将一个数据库的所有表数据同步到另一个具有相同表结构的数据库中。这里,我们不仅讨论如何实现这个功能,还将深入探讨...
在Oracle数据库管理中,有时需要将表从一个表空间移动到另一个表空间。这种操作可能是为了优化存储空间使用、提升性能或是满足特定的业务需求。Oracle提供了多种方法来实现这一目标,包括直接移动表、重建索引以及...