0

一時テーブルから電話番号をテーブルに入力しようとしています。問題なくクエリを書きました。しかし、ここでの私の問題は、会社がすでにプライマリ番号を持っているかどうかを知ることです

そこで、「cvsnumbers」という名前の一時テーブルから 2 つのフィールドを選択します。1) company_code (id) と電話番号です。

main_number フィールドの値を変更するには、case ステートメントを追加する必要があります。したがって、番号に main_number = 1 の番号が既にある場合は、新しい電話番号に 0 を挿入する必要がありますが、main_number がない場合は、新しい電話番号に 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 があるかどうかを確認するために、これを what-c​​ase ステートメントに変更したいと思います。

どうすればこれを変更できますか?

ありがとう

4

1 に答える 1

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 ...
于 2013-05-02T17:59:43.783 に答える