【发布时间】:2021-02-09 08:10:13
【问题描述】:
如果其中一个表中的给定条件为真,我希望能够从中删除选择行的三个表。我正在使用 codeigniter。
我的表名称是:Register、Profiles 和 Profilesmember。所有 3 个表都有我要加入的“电子邮件”列。一个表“Register”有一个唯一的列“is_email_verfiied”——要么是“是”,要么是“否”。如果它是“否”,我想从表“register”以及其他两个表“Profiles”和“Profilesmember”中删除该列,这取决于在“email”列中包含匹配的整体。
这是我的模型:
function databaseupdate ()
{
$verified = 'no';
$tables = array('register', 'profiles', 'profilesmember');
$this->db->from ('register');
$this->db->join('profiles', 'profiles.email = register.email');
$this->db->join('profilesmember', 'profilesmember.email = register.email');
$this->db->where('register.is_email_verified', $verified);
$this->db->delete($tables);
}
它会从“Register”表中删除正确的条目,但不会从第二个表 Profilesmember 或 Profiles 中删除(视情况而定)。
我得到的错误信息是
“‘where 子句’中的未知列‘register.is_email_verified’”。
我检查了“is_email_verified”列拼写正确,当然在Register表中确实存在(为清楚起见,其他2个表中不存在该列)。
最后一个 SQL 查询是
“从配置文件中删除 register.is_email_verified = 'no'”
【问题讨论】:
-
可能类似于
DELETE FROM profiles WHERE email IN (SELECT email FROM register WHERE is_email_verified = 'no') -
如果是我,我会从 sql 开始
标签: mysql codeigniter join delete-row