Здесь я работаю с небольшой сложностью отображения. Я уверен, что есть возможность IF / ELSE, которую я просто упускаю из виду.
У меня есть 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
В первом примере этого не происходит. Но я могу неправильно использовать КОАЛЕС.
Как я могу отобразить 0, если ноль, и 1, если что-то существует?
mysql
if-statement
кофемонитор
источник
источник
Ответы:
Вместо этого
COALESCE(a.addressid,0) AS addressexists
используйтеCASE
:или проще:
Это работает, потому что
TRUE
отображается как1
в MySQL иFALSE
как0
.источник
источник
Будьте осторожны, если вы пришли с C / C ++ и ожидаете, что это сработает:
Даже если 'name' не равно NULL, в отличие от C, ложное условие все равно срабатывает, и приведенный выше оператор возвращает 0. Таким образом, вы должны не забыть явно проверять NULL или пустую строку:
PS Приведенный выше пример Евгения верен , но я хотел прояснить этот нюанс, так как он застал меня врасплох.
источник
источник
Другой способ без WHERE, попробуйте это ..
Выберет как пустые, так и пустые значения
Он установит значение null, если это пустая строка, то также будет истинным.
источник
Фактически вы можете использовать оператор IF в последних версиях MySQL.
IE:
источник
Если в TSQL, вы можете попробовать:
SQL Server должен работать
источник