Saya bekerja dengan sedikit kerumitan tampilan di sini. Saya yakin ada kemampuan IF / ELSE yang baru saja saya abaikan.
Saya memiliki 2 tabel yang saya kueri (pelanggan, alamat). Yang pertama memiliki catatan utama, tetapi yang kedua mungkin memiliki atau tidak memiliki catatan untuk KIRI BERGABUNG.
Saya ingin menampilkan nol jika tidak ada catatan di tabel alamat. Dan saya hanya ingin menampilkan 1, jika ada record.
Apa yang saya coba sejauh ini:
SELECT c.name, COALESCE(a.addressid,0) AS addressexists
FROM customers c
LEFT JOIN addresses a ON c.customerid = a.customerid
WHERE customerid = 123
Contoh pertama ini tidak melakukannya. Tapi saya mungkin salah memanfaatkan COALESCE.
Bagaimana cara menampilkan 0, jika null, dan 1, jika ada?
mysql
if-statement
coffeemonitor
sumber
sumber
Jawaban:
Alih-alih
COALESCE(a.addressid,0) AS addressexists
, gunakanCASE
:atau yang lebih sederhana:
Ini berfungsi karena
TRUE
ditampilkan seperti1
di MySQL danFALSE
sebagai0
.sumber
sumber
Hati-hati jika Anda berasal dari C / C ++ dan mengharapkan ini berfungsi:
Bahkan jika 'name' bukan NULL, tidak seperti di C, kondisi palsu masih terpicu dan pernyataan di atas mengembalikan 0. Jadi, Anda harus ingat untuk secara eksplisit memeriksa NULL atau string kosong:
Contoh PS Eugen di atas benar , tetapi saya ingin mengklarifikasi nuansa ini karena saya terkejut.
sumber
sumber
Metode lain tanpa WHERE, coba ini ..
Akan memilih nilai Empty dan NULL
Ini akan menetapkan null jika itu adalah string kosong, maka benar juga.
sumber
Anda sebenarnya dapat menggunakan pernyataan IF di versi terbaru MySQL.
YAITU:
sumber
Jika dalam TSQL, Anda dapat mencoba:
SQL Server seharusnya berfungsi
sumber