Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何基于一个表中的特定值从三个表中删除行_Sql_Sql Server - Fatal编程技术网

Sql 如何基于一个表中的特定值从三个表中删除行

Sql 如何基于一个表中的特定值从三个表中删除行,sql,sql-server,Sql,Sql Server,大家好 我有三张桌子A,B,C 我在表A中有行,其列“date”具有值“2000-1-1” 我喜欢根据从3表中删除行,其中A.date='2000-1-1' 考虑a.ID=B.ID上的连接。。或者表之间的某种其他类型的联接。您不能对3个表发出单个delete语句,但可以在一个事务中对3个不同的表包装3个delete语句 BEGIN TRANSACTION DELETE FROM TABLE_A WHERE EXISTS (SELECT 1 F

大家好

我有三张桌子<代码>A,
B
C

我在表
A
中有行,其列“
date
”具有值“
2000-1-1

我喜欢根据
3表中删除行,其中A.date='2000-1-1'


考虑a.ID=B.ID上的
连接。。或者表之间的某种其他类型的联接。

您不能对3个表发出单个delete语句,但可以在一个事务中对3个不同的表包装3个delete语句

BEGIN TRANSACTION

    DELETE FROM TABLE_A
    WHERE EXISTS (SELECT 1
                  FROM Table_X X
                  WHERE TABLE_A.ID = X.ID)

    DELETE FROM TABLE_B
    WHERE EXISTS (SELECT 1
                  FROM Table_X X
                  WHERE TABLE_B.ID = X.ID)

    DELETE FROM TABLE_C
    WHERE EXISTS (SELECT 1
                  FROM Table_X X
                  WHERE TABLE_C.ID = X.ID)

COMMIT TRANSACTION;

级联删除怎么样?不能同时从三个表中删除。您需要三个单独的语句。一个DML语句(insert、delete等)只能影响一个表。问题是“如何做”,它们不需要一个语句。这可以通过一个事务中的3条语句来完成。如果您想回答您的问题,我们需要更多信息。您正在寻找多个语句、一个存储过程、一组触发器吗?什么是表X?第四桌?