我有一个表'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`
但这不起作用。
答案 0 :(得分:2)
您无法更新src
,因为它实际上不是一个表。您需要改为JOIN
表blacklist
,并在条件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