从数据库中的多个表中删除行

时间:2013-08-20 12:39:00

标签: sql sql-server

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

我希望删除一个与其他表连接的表,查询看起来像这样。

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

5 个答案:

答案 0 :(得分:1)

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

DROP TABLE table1,table2,table3

答案 1 :(得分:1)

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

从多个表中删除 写下以分号分隔的多个查询,并在

等onces上执行
delete from table1;
delete from table2;
delete from table3;

或者您可以编写执行此任务的过程。

请检查此主题 Drop multiple tables in one shot in mysql

答案 2 :(得分:1)

这应该有效:

DELETE DeleteFromTable FROM DeleteFromTable AS DT
JOIN CriteriaFromTable AS CT ON DT.SomeId = CT.SomeId
WHERE  CT.SomeId=[value]

答案 3 :(得分:0)

你可以像DROP一样向DROP TABLE [TABLE_1] DROP TABLE [TABLE_2] DROP TABLE [TABLE_3] 表写一个查询:

DROP

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

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

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

但是,如果这些表在您要删除的表之外具有其他依赖关系,则需要先删除依赖关系才能生效。

答案 4 :(得分:0)

您可以使用:

DELETE FROM TableName

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

TRUNCATE TABLE TableName

但是,您需要考虑是否有其他表格referential integrity,如果是这种情况,请参阅此帖子SQL Server: How to ignore referential integrity until COMMIT?

修改

您的上述评论......

  

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

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