有下列相关表格
我需要消除他们之间的关系 table4
以及 table1
,即中存在的数据 table1_table4
条件是表4 target
与表3不同 target
为了确定受影响的行数,我编写了这个查询
SELECT
COUNT(*)
FROM
table2
INNER JOIN
table2_table3 ON table2.id = table2_table3.table2_id
INNER JOIN
table3 ON table3.id = table2_table3.table3_id
INNER JOIN
table1_table2 ON table2.id = table1_table2.table2_id
INNER JOIN
table1 ON table1.id = table1_table2.table1_id
INNER JOIN
table1_table4 ON table1.id = table1_table4.table1_id
INNER JOIN
table4 ON table4.id = table1_table4.table4_id
WHERE
table3.target != table4.target;
在这里,我确定149个记录将受到影响。
现在我需要删除中受影响的数据 table1_table4
. 你能告诉我怎么写这个删除查询吗?
提前谢谢
2条答案
按热度按时间ltqd579y1#
您可以使用与select中相同的连接
对于表1和表4,如果连接条件相同,可以使用
n9vozmp42#
mysql支持多列输入
我不太喜欢在长列表中使用in,但这相对来说比较短
您还会注意到您的table1\u table4被 Package 在另一个select中。这是为了克服mysql不允许您修改所选表的限制而做的一个捏造。这个子查询将表具体化为一个临时表,因此mysql将其视为与您正在更新的表不同的表。作为一个技巧,它可能不会在MySQL8中工作-请参阅第一条评论中发布的链接以获取更多信息