【问题标题】:MySQL UPDATE .. WHERE IN .. RAND() .. LIMITMySQL UPDATE .. WHERE IN .. RAND() .. LIMIT
【发布时间】:2013-05-29 14:35:20
【问题描述】:

好的,这是一个奇怪的查询,我知道:

UPDATE `entries`
SET `winner` = 1
WHERE `subscriber_id` IN (19, 128, 127, 125, 150)
ORDER BY RAND()
LIMIT 3

subscriber_ids 肯定出现,所有获胜者字段值为 0。

有时它会更新所有 3 行,有时会更少,并且它可能不会更新任何内容。

当我在这个查询中使用EXPLAIN 时,它会给我一个完全没用的Error Code: 1064. You have an error in your SQL syntax; 错误。

您能否确认(或否认)我的查询有效?为什么会产生上述不同的结果?

提前致谢

【问题讨论】:

    标签: mysql random sql-update


    【解决方案1】:

    您能否确认所有获胜者字段都不是 1。可能是它尝试更新已设置为 1 的行。否则它似乎没问题。 EXPLAIN 语句仅适用于 5.6 之前的 MySQL 服务器上的 SELECT 语句,因此这可能是它失败的原因

    【讨论】:

    • 是的,所有的获胜者字段都是 0。
    猜你喜欢
    • 2014-11-12
    • 1970-01-01
    • 2020-04-18
    • 2013-01-03
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2011-02-08
    相关资源
    最近更新 更多