Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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_Join_Hsqldb_Sql Delete - Fatal编程技术网

Sql 删除多表而不连接

Sql 删除多表而不连接,sql,join,hsqldb,sql-delete,Sql,Join,Hsqldb,Sql Delete,我有两张桌子T1和T2。C1是T1的主键,C2是T2的外键,它引用T1的C1列。我想删除验证特定条件的T2行。可以使用简单的删除: DELETE FROM T2 WHERE <condition>; 但是,我还想删除T1中与前面语句删除的行相关的行。例如,如果T2的行R2已被上一条语句删除,那么我还想删除带有R2引用的主键的T1的行R1。 我知道有可能在JOIN中使用DELETE语句,但我使用的是不支持此功能的HSQLDB内存数据库。通常情况下,情况应该是相反的,从T1中删除一行,

我有两张桌子T1和T2。C1是T1的主键,C2是T2的外键,它引用T1的C1列。我想删除验证特定条件的T2行。可以使用简单的删除:

DELETE FROM T2 WHERE <condition>;
但是,我还想删除T1中与前面语句删除的行相关的行。例如,如果T2的行R2已被上一条语句删除,那么我还想删除带有R2引用的主键的T1的行R1。
我知道有可能在JOIN中使用DELETE语句,但我使用的是不支持此功能的HSQLDB内存数据库。

通常情况下,情况应该是相反的,从T1中删除一行,T2中具有外部引用的所有行都应该被删除:在删除级联时,将此设置为“在外部关系上”

用于从多个表中删除, 这应该起作用: 删除[低优先级][快速][忽略] 来自tbl_名称[.*][,tbl_名称[.*]]。。。 使用表u引用
[其中,条件]

通常,情况应该是相反的,从T1删除一行时,从T2删除所有具有外部引用的行:在删除级联时,将此设置为“外部关系”

用于从多个表中删除, 这应该起作用: 删除[低优先级][快速][忽略] 来自tbl_名称[.*][,tbl_名称[.*]]。。。 使用表u引用
[其中WHERE_条件]

如果在删除级联上使用,则始终可以通过以下方式执行删除:

DELETE FROM T1 WHERE T1.C1 IN (SELECT T2.C2 FROM T2 WHERE <condition>)

如果使用ON DELETE CASCADE,则始终可以通过以下方式执行删除:

DELETE FROM T1 WHERE T1.C1 IN (SELECT T2.C2 FROM T2 WHERE <condition>)

就像你说的情况应该是相反的,我使用DELETE CASCADE。删除T1实例时,我要删除的其他表的所有行都将被删除。问题是我使用的是HSQLDB,我不知道是否支持多表删除。就像你说的情况应该是相反的,我使用的是DELETE CASCADE。删除T1实例时,我要删除的其他表的所有行都将被删除。问题是我使用的是HSQLDB,我不知道是否支持多表删除。