ここでは、表示が少し複雑になっています。私が見落としているだけの IF/ELSE 機能があるはずです。
クエリを実行するテーブルが 2 つあります (顧客、住所)。最初のテーブルにはメイン レコードがありますが、2 番目のテーブルには LEFT JOIN するレコードがある場合とない場合があります。
アドレス テーブルにレコードがない場合は 0 を表示し、レコードが存在する場合は 1 のみを表示したいです。
これまで試みたこと:
SELECT c.name, COALESCE(a.addressid,0) AS addressexists
FROM customers c
LEFT JOIN addresses a ON c.customerid = a.customerid
WHERE customerid = 123
この最初の例ではそれが実行されません。しかし、COALESCE を誤って使用している可能性があります。
null の場合は 0 を、何かが存在する場合は 1 を表示するにはどうすればよいですか?
ベストアンサー1
の代わりにCOALESCE(a.addressid,0) AS addressexists
、以下を使用しますCASE
:
CASE WHEN a.addressid IS NOT NULL
THEN 1
ELSE 0
END AS addressexists
またはもっとシンプルに:
(a.addressid IS NOT NULL) AS addressexists
これは、MySQL ではTRUE
が として表示され、として表示されるため機能します。1
FALSE
0