3

私がやろうとしているのは、テーブル全体を取り、id電子メールアドレスが値になっているメンバーが何であるかを調べ、代わりemails.fromにそれらをそこに入れることです. idメール アドレスの代わりに ID を使用してパフォーマンスを改善しようとしていますが、このタスクを完了できません。

$mysql = new mysql();
$mysql->query('SELECT `from` FROM `emails` ORDER BY `id` ASC' );

while($row = mysql_fetch_array($mysql->result)){
    $mysql2 = new mysql();
    $mysql2->query('SELECT `id` FROM `exchange` WHERE `email` = "'.$row['from'].'"');

    $details = mysql_fetch_assoc($mysql2->result);


    $mysql2->query('UPDATE `emails` SET `from` = '.$details['id'].' WHERE `from` = "'.$row['from'].'"');
}
4

3 に答える 3

2

テーブル全体を実行している場合は、検索する必要はありません。

UPDATE emails SET from=id

テーブルの各行を実行します。

于 2012-08-21T21:20:57.923 に答える
1

私があなたのコードを理解していれば、次のようなことを試すことができます:

UPDATE     `emails`
INNER JOIN `exchange` ON `exchange`.`email` = `emails`.`from`
SET `emails`.`from` = `exchange`.`id`
于 2012-08-21T21:23:39.167 に答える
1

以下のクエリはトリックを行う必要があります:)

update emails 
set `from`=(select e.id from exchange as e where e.email=em.`from`)
from emails as em
order by em.id asc
于 2012-08-21T21:23:54.500 に答える