📜  从内部连接删除 sql (1)

📅  最后修改于: 2023-12-03 14:49:21.654000             🧑  作者: Mango

从内部连接删除 SQL

在 SQL 中,连接是通过在两个表之间共享一列数据来实现的。内部连接(inner join)是一种通过匹配两个表中的共同数据行来创建连接的方法。如果想要删除在内部连接中的数据,可以通过以下方法实现。

删除内部连接中的数据
1. 使用子查询

可以使用子查询来查找内部连接中的数据,并将其从原始表(parent table)中删除。

DELETE FROM parent_table
WHERE parent_table.id IN (
    SELECT inner_table.id
    FROM parent_table
    INNER JOIN inner_table
    ON parent_table.id = inner_table.id
)

这个查询首先在内部连接中查找所有 ID,然后根据这些 ID 从原始表中删除对应的行。

2. 使用临时表

另一种方法是将内部连接的结果存储在一个临时表中,并在原始表中使用它来删除行。

CREATE TEMPORARY TABLE temp_table AS (
    SELECT *
    FROM parent_table
    INNER JOIN inner_table
    ON parent_table.id = inner_table.id
);

DELETE FROM parent_table
WHERE id IN (
    SELECT id
    FROM temp_table
);

这个查询首先使用内部连接创建一个临时表,然后从原始表中删除与临时表中的结果匹配的行。

总结

无论是使用子查询还是临时表,都可以从内部连接中删除数据。但是,使用临时表可以提高代码的可读性和效率。要根据具体情况选择合适的方法,以确保数据库的性能和稳定性。