代码之家  ›  专栏  ›  技术社区  ›  John Beasley

根据另一列的值更新列

  •  0
  • John Beasley  · 技术社区  · 1 年前

    我需要根据MySQL表中“EMAIL”列的值更新该表中名为“ISP_GROUP”的列。

    我在Excel中完成了这项工作。我使用以下公式根据A列中的值(电子邮件)填充ISP_GROUP列的值:

    =IF(COUNTIF(A2,"*@gmail.com*"),"GM",
     IF(COUNTIF(A2,"*@yahoo.com*"),"VMG",
     IF(COUNTIF(A2,"*@aol.com*"),"VMG",
     IF(COUNTIF(A2,"*@sbcglobal.net*"),"VMG",
     IF(COUNTIF(A2,"*@att.net*"),"VMG",
     IF(COUNTIF(A2,"*@ymail.com*"),"VMG",
     IF(COUNTIF(A2,"*@rocketmail.com*"),"VMG",
     IF(COUNTIF(A2,"*@aim.com*"),"VMG",
     IF(COUNTIF(A2,"*@verizon.net*"),"VMG",
     IF(COUNTIF(A2,"*@hotmail.com*"),"MSFT",
     IF(COUNTIF(A2,"*@live.com*"),"MSFT",
     IF(COUNTIF(A2,"*@msn.com*"),"MSFT",
     IF(COUNTIF(A2,"*@outlook.com*"),"MSFT",
     IF(COUNTIF(A2,"*@passport.com*"),"MSFT", "other" ))))))))))))))
    

    因此,上述公式将查看第一列中的电子邮件。然后,例如,如果电子邮件是“@gmail.com”帐户,请将ISP_GROUP值设置为GM。

    我无法再在Excel中完成此任务,因为CSV中的记录数量超过了Excel可以处理的数量。

    因此,现在我必须将CSV直接导入MySQL表中,然后在上传后更新值。

    我只是不知道如何在MySQL更新语句中编写上述公式。

    因此,查询将按如下方式开始:

    UPDATE `table` SET `ISP_GROUP` = 'SOMETHING TO MIMIC THE ABOVE FORMULA';
    

    我不知道如何将Excel公式转换为MySQL中的查询。

    现在,表格看起来像这样:

    |     EMAIL     | ISP_GROUP |
    -----------------------------
    | [email protected] |           |
    | [email protected]   |           |
    | [email protected]     |           |
    | [email protected]     |           |
    -----------------------------
    

    我需要编写的查询将更新ISP_GROUP,如下所示:

    |     EMAIL     | ISP_GROUP |
    -----------------------------
    | [email protected] |   MFT     |
    | [email protected]   |   GM      |
    | [email protected]     |   VMG     |
    | [email protected]     |   OTHER   |
    -----------------------------
    
    1 回复  |  直到 1 年前
        1
  •  2
  •   Prathik Kini    1 年前
    UPDATE `table`
    SET `ISP_GROUP` = 
        CASE
            WHEN `EMAIL` LIKE '%@gmail.com%' THEN 'GM'
            WHEN `EMAIL` LIKE '%@yahoo.com%' THEN 'VMG'
            WHEN `EMAIL` LIKE '%@aol.com%' THEN 'VMG'
            WHEN `EMAIL` LIKE '%@sbcglobal.net%' THEN 'VMG'
            WHEN `EMAIL` LIKE '%@att.net%' THEN 'VMG'
            WHEN `EMAIL` LIKE '%@ymail.com%' THEN 'VMG'
            WHEN `EMAIL` LIKE '%@rocketmail.com%' THEN 'VMG'
            WHEN `EMAIL` LIKE '%@aim.com%' THEN 'VMG'
            WHEN `EMAIL` LIKE '%@verizon.net%' THEN 'VMG'
            WHEN `EMAIL` LIKE '%@hotmail.com%' THEN 'MFT'
            WHEN `EMAIL` LIKE '%@live.com%' THEN 'MFT'
            WHEN `EMAIL` LIKE '%@msn.com%' THEN 'MFT'
            WHEN `EMAIL` LIKE '%@outlook.com%' THEN 'MFT'
            WHEN `EMAIL` LIKE '%@passport.com%' THEN 'MFT'
            ELSE 'OTHER'
        END;
    

    请尝试上面的sql代码。