2

我有一个用户表,其列名称为 id、father_email、mother_email、email_notification 等等,现在我想更新 email_notification 列

父亲电子邮件,母亲电子邮件我用多个查询完成了它,但我想知道如何只用单个查询来完成它,这样可以节省执行时间。

我的代码如下:

<?php 
    $qry="SELECT id,CONCAT(father_email,',',mother_email) as notify FROM user";
    $query=mysql_query($qry);
    while($row=mysql_fetch_assoc($query))
    {
        $qry2="UPDATE user SET email_notification='".$row['notify']."' WHERE id=".$row['id']."";
        mysql_query($qry2);
    }
?>

它工作正常,但我想知道如何使用单个查询来做到这一点

4

2 回答 2

3

这将更新所有用户的所有 email_notification 列:

UPDATE user
SET email_notification = CONCAT_WS(',', father_email, mother_email)

(我认为最好使用 CONCAT_WS 来跳过父亲电子邮件或母亲电子邮件中的空值)

于 2013-04-17T07:45:44.873 回答
0

这将取代所有这些

UPDATE user AS u
INNER JOIN user AS ul ON ul.id = u.id
SET u.email_notification = CONCAT(ul.father_email,',',ul.mother_email)

UPDATE user
SET email_notification = CONCAT_WS(',', father_email, mother_email)
于 2013-04-17T07:46:33.447 回答