【问题标题】:MySQL Update, Set with Where not working?MySQL 更新,设置在哪里不起作用?
【发布时间】:2012-04-28 18:27:58
【问题描述】:

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

'()' 中的任何内容都是 cmets

查询:

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

我错过了什么吗?

干杯, 乔

【问题讨论】:

    标签: mysql set where


    【解决方案1】:

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

    试试吧:

    UPDATE users JOIN sites ON users.idSiteRegUsers = sites.id_Sites
    SET    users.idSiteRegUsers='1'
    WHERE  sites.SiteActivateSites='DEL'
    

    【讨论】:

    • 哈哈 傻我!非常感谢您指出这一点。你是超级明星蛋蛋!
    猜你喜欢
    • 2014-02-08
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    相关资源
    最近更新 更多