MySQL:更新两个表(如果两个表都包含电子邮件)

时间:2018-10-03 11:45:50

标签: php mysql

我有一个表'userdata',其中有许多行,其中包含字段 id,名称,电子邮件等IsBL ,另一个表'blacklist'包含字段 id,组,电子邮件,xcount

我使用以下代码进行更新:

UPDATE `userdata` AS `dest`,
         (SELECT * FROM `blacklist` WHERE `group` = "3") AS `src`
SET `dest`.`IsBL` = '1' 
WHERE `dest`.`email` = `src`.`email`

这按预期工作。此外,我想一直在两个表上的邮件地址相等的时候增加'xcount'字段。有办法吗?

我尝试过

SET `dest`.`IsBL` = '1', `src`.`xcount` = `src`.`xcount` + 1
WHERE `dest`.`email` = `src`.`email`

但这不起作用。

1 个答案:

答案 0 :(得分:2)

您无法更新src,因为它实际上不是一个表。您需要改为JOINblacklist,并在条件WHERE group = 3上包含email条件:

UPDATE `userdata` AS `dest`, `blacklist` AS `src`
SET `dest`.`IsBL` = '1', `src`.`xcount` = `src`.`xcount` + 1
WHERE `dest`.`email` = `src`.`email` AND
      `src`.`group` = 3