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 回答