首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将3个MySQL查询合并为一个

将3个MySQL查询合并为一个
EN

Stack Overflow用户
提问于 2012-08-22 05:06:21
回答 3查看 106关注 0票数 3

我要做的是找出电子邮件地址为emails.from值的成员的id是什么,并将他们的id放在其中。我试图通过使用ID而不是电子邮件地址来提高我的性能,但我无法完成这项任务。

代码语言:javascript
代码运行次数:0
运行
复制
$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'].'"');
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-22 05:23:39

如果我理解你的代码,你可以尝试这样做:

代码语言:javascript
代码运行次数:0
运行
复制
UPDATE     `emails`
INNER JOIN `exchange` ON `exchange`.`email` = `emails`.`from`
SET `emails`.`from` = `exchange`.`id`
票数 1
EN

Stack Overflow用户

发布于 2012-08-22 05:20:58

如果你做的是整个表,就不需要查了。

代码语言:javascript
代码运行次数:0
运行
复制
UPDATE emails SET from=id

将完成表中的每一行。

票数 2
EN

Stack Overflow用户

发布于 2012-08-22 05:23:55

下面的查询应该可以做到这一点:)

代码语言:javascript
代码运行次数:0
运行
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12063045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档