我正在尝试从 MySQL 中的表中删除数据,但在执行命令之前我想确保我做得正确。我希望删除 storeID > 5000000 且无法与 Deals 表中的任何项目匹配的所有行。以下是我的查询:
DELETE FROM stores s
LEFT JOIN deals sd
ON s.storeID = sd.store_ID
WHERE storeID > 5000000
AND sd.dealID IS NULL;
上面的查询是否只会删除stores表中的行而不影响deals表?
最佳答案
如果您担心查询会从生产表中删除额外的内容,我建议启动一个开发实例并复制数据库架构。如果可能,请完整转储生产数据库并将其导入到您的开发/测试系统中。这样您就可以测试您的查询并确定其结果。
如果您想要数据库转储甚至只是数据库架构,您可以使用 mysqldump 来生成这些转储。
我认为您的查询不会从交易表中删除任何内容,但我建议您进行检查以确保 100% 确定。这是否不会在 Deals 表中留下引用 storeid 的行,而该 storeid 不在stores 表中?
关于mysql - 使用 Join 在 MySQL 中正确删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35612480/