0

我读过其他帖子,我真的不明白我在这里做错了什么,因为这是一个如此简单的陈述。

'()' 中的任何内容都是注释

询问:

[UPDATE users, sites 
SET users.idSiteRegUsers='1'
WHERE sites.SiteActivateSites='DEL' ]

(选择在整个查询中更新的 TBL)(将用户 tbl idSiteRegUsers 设置为 1)(其中只有 tbl 站点中的站点 = DEL)

我还阅读了http://bugs.mysql.com/bug.php?id=52651并尝试将 INT 更改为 VARCHAR 并将 UPDATING 0 更改为 DEL 由于该错误,但结果仍然相同。

问题:

我有 2129 条记录需要更新,因为使用简单的 select 语句来了解结果的数量。

([SELECT
sites.SiteActivateSites,
sites.id_Sites,
users.idSiteRegUsers,
users.CompanyNameUsers,
sites.LinkNameSites
FROM
users
INNER JOIN sites ON users.idSiteRegUsers = sites.id_Sites
WHERE
sites.SiteActivateSites != '1']) 'simple'

但是 UPDATE 查询更新所有 4000 多条记录,不仅是 = DEL 的记录,还有那些引用另一个值的记录,例如 = 1。

我错过了什么吗?

干杯,乔

4

1 回答 1

1

就像使用您的SELECT命令一样,您需要告诉 MySQL 表是如何连接的:您UPDATE当前正在对两个表进行完整的笛卡尔积(每一行都与每一行users连接sites- 因此WHERE条件过滤sites仍然会导致匹配在每条记录上users)。

请尝试:

UPDATE users JOIN sites ON users.idSiteRegUsers = sites.id_Sites
SET    users.idSiteRegUsers='1'
WHERE  sites.SiteActivateSites='DEL'
于 2012-04-28T18:32:41.473 回答