0

わかりました、それは奇妙なクエリです、私は知っています:

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;エラーが表示されます。

私のクエリが有効であることを確認 (または拒否) していただけますか? 上記の異なる結果が得られるのはなぜですか?

前もって感謝します

4

1 に答える 1

0

すべての勝者フィールドが 1 ではないことを確認できますか。既に 1 に設定されている行を更新しようとしている可能性があります。それ以外の場合は問題ないようです。EXPLAIN ステートメントは、5.6 より古い MySQL サーバーの SELECT ステートメントでのみ機能するため、これが失敗の原因である可能性があります。

于 2013-05-29T15:17:02.850 に答える