Mysql逻辑 - 如何根据数据更改选定的值?

时间:2013-05-02 17:23:06

标签: mysql sql case-expression

我正在尝试使用临时表中的电话号码填充表格。我写了没有问题的查询。但我在这里的问题是要知道该公司是否已经有一个主号码

所以我从我的临时表中选择了2个字段,名为“cvsnumbers”1)company_code(id)和电话号码。

我需要添加一个case语句来更改main_number字段的值。所以,如果号码已经有一个主号码为1的号码,那么我需要为新的电话号码插入0,但如果没有主号码,那么我需要为新的电话号码插入1,使其成为该帐户的主要电话号码。

这是我的查询

    SELECT ac.account_id,
           REPLACE(REPLACE(REPLACE(REPLACE(ta.phone_number, '-', ''), ' ', ''), ')', ''),'(','') AS Phone,
           IFNULL(ta.ext, '') AS extention,
           IFNULL(ta.main_number, 0) AS MainNumber,
           ta.type AS contact_type,
           '2' AS created_by
      FROM cvsnumbers AS ta
INNER JOIN accounts AS ac ON ac.account_id = ta.company_code
     WHERE LENGTH(REPLACE(REPLACE(REPLACE(REPLACE(ta.phone_number, '-', ''), ' ', ''), ')', ''),'(','') ) = 10
       AND REPLACE(REPLACE(REPLACE(REPLACE(ta.phone_number, '-', ''), ' ', ''), ')', ''),'(','') NOT IN (SELECT contact_number FROM contact_numbers)

我的问题是

`IFNULL(ta.main_number, 0) AS MainNumber,`

我想将其更改为一些案例陈述,以检查company_code是否已经有一个main_number。

我该如何更改?

由于

1 个答案:

答案 0 :(得分:0)

我仍然不确定你的查询究竟应该是什么样子,但是这些内容会怎样?

SELECT CASE 
            WHEN EXISTS (SELECT *
                           FROM contact_numbers
                          WHERE main_number = 1
                            AND contact_number = 
                           <insert contact number from outer expression here>) 
            THEN 1
            ELSE 0
        END AS MainNumber
  FROM ...