0

我想根据另一个表中的条件从一个表中删除一些记录。如何在不删除两个表中的记录的情况下从其中一个表中删除?

我正在寻找删除与其他表连接的表,查询看起来像这样。

DELETE  DeletingFromTable
FROM    DeletingFromTable
        INNER JOIN CriteriaTable ON DeletingFromTable.field_id = CriteriaTable.id
WHERE   CriteriaTable.criteria = "value" ;
4

5 回答 5

1

这应该有效:

DELETE DeleteFromTable FROM DeleteFromTable AS DT
JOIN CriteriaFromTable AS CT ON DT.SomeId = CT.SomeId
WHERE  CT.SomeId=[value]
于 2013-08-20T13:17:01.997 回答
1

您的问题不是 100% 清楚您的问题是什么,但此查询将同时删除表 1,2 和 3:

DROP TABLE table1,table2,table3
于 2013-08-20T12:43:31.103 回答
1

您一次只能从一个表中删除数据。

从多个表中删除写多个用分号分隔的查询并立即执行,例如

delete from table1;
delete from table2;
delete from table3;

或者您可以编写程序来执行此任务。

请同时检查此线程 在 mysql 中一次性删除多个表

于 2013-08-20T12:45:17.017 回答
0

DROP您可以像这样向表写入查询:

DROP TABLE [TABLE_1]
DROP TABLE [TABLE_2]
DROP TABLE [TABLE_3]

根据表和它们之间可能存在的任何约束,您需要以DROP正确的顺序访问表。

如果您右键单击任何表(取决于 SQL 版本),您应该能够“查看依赖关系”。如果您计划的 3 个表DROP仅相互依赖,则需要DROP首先使用没有子依赖关系的表以避免它失败。

例如,如果您尝试删除其主键在子表中作为外键引用的父表,DROP则会因此而失败。因此,首先使用外键删除子表将允许您随后删除DROP父表。

但是,如果这些表在您要删除的表之外还有其他依赖项,则需要先删除这些依赖项,然后才能正常工作。

于 2013-08-20T12:48:45.157 回答
0

您可以使用:

DELETE FROM TableName

这将删除所有数据,但如果您有任何种子列,这些将不会被重置。如果要删除数据并重置 PK 的播种,请使用TRUNCATE...

TRUNCATE TABLE TableName

但是,您需要考虑是否有其他表具有referential integrity,如果是这种情况,请在此处查看此帖子SQL Server:如何在 COMMIT 之前忽略引用完整性?

编辑

你上面的评论...

删除这样的查询 DELETE FROM table_name WHERE some_column=some_value;

...建议您要删除特定行?

于 2013-08-20T12:50:52.327 回答