mysql - 如何删除表中的记录,该表中的主键在另一个表中作为外键引用?
问题描述
在我的数据库中,我有一个表说“employee”,它有一个主键属性“employee_id”和另一个属性“salary”。还有另一个表说“employee_qualification”,它有一个外键属性“employee_id”。那么,如何删除“employee”和“employee_qualifications”中薪水=10000 的所有记录?
这似乎不起作用。
DELETE FROM employee WHERE employee.salary=10000;
解决方案
您可以执行两条语句。
DELETE FROM employee_qualifications WHERE employee_qualifications.employee_id in (SELECT employee_id FROM employee WHERE employee.salary=10000)
DELETE FROM employee WHERE employee.salary=10000
虽然这会起作用,但它可能会在employee_qualifications 表中留下一些孤立的记录。以下选项将清除孤立的记录。
DELETE FROM employee WHERE employee.salary=10000
DELETE FROM employee_qualifications WHERE employee_qualifications.employee_id Not in (SELECT employee_id FROM employee)
推荐阅读
- magento2 - Magento2:在 ExportButton 组件上显示弹出窗口
- c# - WPF Extended Toolkit DateTimePicker 始终重置为 DateTime.Now 当输入任何不正确的 DateTime 格式值时
- java - 在 JNI Android 的 C++ 中使用 memset 时检测到堆栈损坏
- ios - 从 Android 手机上传的音频文件无法在 iOS 中播放
- javascript - 在 package.json 中使用“*”而不是某个版本的“~”、“^”库是一个好习惯吗?
- php - Nextcloud video-preview 生成中文路径
- c# - 如何将 Console.ReadLine 中的值添加到数组中?
- python - 如何在 Flask sqlalchemy 中更新特定用户的行
- mysql - 在短时间内传输超过 50GB 的海量数据库的简单方法
- javascript - electron js (NEXT.js + Electron) 中的权限问题