MySQL UPDATE .. WHERE IN .. RAND().. LIMIT

时间:2013-05-29 14:35:20

标签: mysql random sql-update

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

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

subscriber_id,所有获胜者字段值均为0.

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

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

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

提前致谢

1 个答案:

答案 0 :(得分:0)

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