Возвратите что-то другое, кроме NULL или EMPTY, с помощью запроса mysql - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь определить, присутствует ли идентификатор в моей таблице MySQL. Если нет, мне нужно вернуть -1. Поэтому я попытался IFNULL. Однако я все еще опустошаюсь.

select ifnull(id, -1) as id from docs  where id=3909090 LIMIT 1

Я должен получить здесь -1. Есть предложения?

Ответы [ 3 ]

3 голосов
/ 27 марта 2020

Вы можете использовать IFNULL() таким образом

SELECT IFNULL( (select id from docs where id=3909090 LIMIT 1) ,-1) AS ID;

Демонстрация на БД <> Fiddle

1 голос
/ 27 марта 2020

Вы можете COUNT количество строк с id = 3909090, а если 0, вернуть -1, в противном случае значение id:

select case when count(*) = 0 then -1
            else min(id)
       end as id
from docs  
where id = 3909090

Обратите внимание, что мы используем min(id), чтобы избежать проблем с группировкой.

Демонстрация на dbfiddle

1 голос
/ 27 марта 2020

Вы можете использовать NOT EXISTS для этого.

select -1 as id from docs where NOT EXISTS (SELECT * FROM docs WHERE id=3909090 )

NOT EXISTS вернет True, если в таблице с таким идентификатором не найдена запись. Так как условие WHERE истинно, оно выведет значение внешнего запроса, равное -1. ​​

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...