0

cron ジョブで定期的に更新したい値を持つテーブルがあります。ただし、別のテーブルの値に置き換えて値を更新する必要があります。問題は、置換値をランダムに選択したいということです。

たとえば、表 1 には

ID    Email
=================
1     bobatumail

表 2 には次のものがあります。

ID    Email
================
1     bobatumail
2     joeatumail
3     peteatumail
4     biffatumail
5     wilneratumail
6     wilsonatumail

表 1 の bobatumail を、ランダムである限り、表 2 の他の値に置き換えるクエリが必要です。表 1 と同じ値になることもあります。

これを行う方法はありますか?

4

1 に答える 1

0

MySQL では、REPLACE ステートメントを使用できます。

REPLACE INTO table1 (ID, Email)
SELECT 1, table2.Email FROM table2 ORDER BY RAND() LIMIT 1;

2 行目の「1」はエントリの ID を表し、2 番目の部分は table2 からランダムな値を返します。はい、UPDATE ステートメント (JOIN および ANSI) を使用したソリューションがありますが、常に注意が必要であり、通常は安全な更新モードをオフにする必要があります。

http://dev.mysql.com/doc/refman/5.5/en/mysql-command-options.html#option_mysql_safe-updates

REPLACE は最初に古いエントリを削除してから、新しいエントリを再挿入することに注意してください。

http://dev.mysql.com/doc/refman/5.5/en/replace.html

于 2012-11-20T21:21:01.357 に答える