SQL のメモ
検索 CASE 式でしか NULL の判定はできない
-
検索 CASE 式: NULL 判定できる
CASE WHEN d.name IS NULL THEN CASE d.type WHEN 'husky' THEN 'risa' WHEN 'shiba' THEN 'natsu' WHEN 'border collie' THEN 'chon' WHEN 'labrador retriever' THEN 'robo' ELSE NULL END ELSE d.name END AS name
-
簡易 CASE 式: NULL 判定できない
CASE d.name WHEN NULL THEN CASE d.type WHEN 'husky' THEN 'risa' WHEN 'shiba' THEN 'natsu' WHEN 'border collie' THEN 'chon' WHEN 'labrador retriever' THEN 'robo' ELSE NULL END ELSE d.name END AS name
d.nameが NULL の場合は、FALSEと評価されてしまう (ELSE句に入ってしまう)使いようによっては、
FALSEと評価されてしまうことを逆に利用できるかも....
COUNT(DISTINCT CASE WHEN ...)
こういう書き方ができる
COUNT( DISTINCT CASE WHEN l.type = 2 THEN l.user_id ELSE NULL END ) as num_unique_users,
SELECT文の評価順序
-
これがわかりやすい (いつも見せていただいています、ありがとうございます)
