Вложенные или несколько функций case

#mysql #sql

Вопрос:

Я пытаюсь выполнить вложенный случай при запросе. В моей таблице есть столбцы ID, code1 и code2. create table as select ID, code1 case when code1 is not null then 'yes' else (select code2, case when code 2 is not null then 'no' else 'NA' from table) from table

Чего я хочу добиться, так это того, что если код1 равен нулю, я хочу продолжить и проверить, является ли код 2 нулевым или нет. Если code1 не равен нулю, то он сразу получает тег » да » без каких-либо проверок на code2. Каков был бы правильный способ сделать это. Любая помощь будет признательна. Спасибо.

Комментарии:

1. Есть ли причина, по которой вы приняли последний ответ?

Ответ №1:

В сочетании с созданием таблицы вы получаете идентификатор и тег с вашей спецификацией

 CREATE TABLE mynewtable SELECT ID,
    CASE
        WHEN code1 IS NOT NULL THEN 'yes'
        WHEN code2 IS NOT NULL THEN 'no'
        ELSE 'NA'
    END tag FROM
    table1
 

Ответ №2:

Вам нужно только 1 CASE выражение:

 SELECT ID, code1,
       CASE 
         WHEN code1 IS NOT NULL THEN 'yes' 
         WHEN code2 IS NOT NULL THEN 'no'
         ELSE 'NA'
       END AS tag
FROM tablename
 

Каждая WHEN ветвь обрабатывается только в том случае, если предыдущие завершились неудачно.