前提・実現したいこと
1000万件あるレコードそれぞれにランダムな数が振り分けられているテーブルを作成しました。
そのテーブルからN個のレコードを選び(例えば10万個)、そのレコード全ての値を別のランダムな値に更新したいです。
ランダムにN個選ぶことと、ランダムな値に更新するという別々の動作はできたのですが、この2つを結合することができない状態です。
ご教授のほどよろしくお願いします。
N個ランダムに選ぶコード
select ID from testtable order by rand() limit N;
###numを1万以下の新たな値に更新するコード
update testtable set num = FLOOR(RAND() * (10001))
###自分のmysqlの情報です。
mysql Ver 8.0.22 for osx10.15 on x86_64 (Homebrew)
update testtable set num = FLOOR(RAND() * (8001)) where ID = (select ID from testtable order by rand() limit 100000);
うまくいきませんでした。
おそらくselect文ではないから失敗したのかなと思うのですが、このような時はどうすれば良いでしょうか?
うまくいかないだけでは正直分からないのですが、たぶんwhere in句を使わないとダメかとおもいます。エラーメッセージを見て正しく対応してください。
あなたの回答
tips
プレビュー