mysql - 使用 Join 在 MySQL 中正确删除

标签 mysql

我正在尝试从 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/

相关文章:

MYSQL - 在存储过程中组合多个结果集

mysql - 首先从两个表中获取具有最新对话(消息)的用户,然后获取其他没有对话的用户

php - 如何显示存储在数据库中的所有 session 信息(Laravel)

mysql - 将串行数据保存到Web服务器数据库

mysql - 如何使用父数据从父表创建子表

PHP 到 mySQL 查询错误

php - 使用 Php 的自动化事件

mysql - 提高 Mysql 查询的性能(很多行和时间戳 "problem")

php - MySQLi 查询不工作 |空白 PHP 页面

mysql - 在 Sequelize 中未定义 findOne 属性