MySQL更新,设置在何处不起作用?

时间:2012-04-28 18:27:58

标签: mysql set where

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

'()'中的任何内容都是评论

查询:

[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.

我错过了什么吗?

干杯, 乔

1 个答案:

答案 0 :(得分:1)

与您的SELECT命令一样,您需要告诉MySQL如何连接表:您的UPDATE当前正在执行两个表的完整笛卡尔积({{1}中的每一行已加入users中的每一行 - 因此sites上的WHERE条件过滤仍然会导致来自sites的每条记录都匹配。

尝试改为:

users