1. ホーム
  2. mysql

[解決済み] MySQL IF NOT NULL, then display 1, else display 0

2022-08-01 01:59:27

質問

少し複雑な表示をしています。 私が見落としているだけで、IF/ELSE 機能があるはずです。

私はクエリしている 2 つのテーブルを持っています (顧客、住所)。 最初のテーブルにはメインレコードがありますが、2番目のテーブルにはLEFT JOINするレコードがあるかもしれませんし、ないかもしれません。

私は、アドレステーブルにレコードがない場合、ゼロを表示したいと思います。 そして、レコードが存在する場合は、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を表示するにはどうしたらよいでしょうか。

どのように解決するのですか?

の代わりに 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

これは TRUE として表示されるからです。 1 と表示され、MySQLでは FALSE として 0 .