Возвращать данные, даже если они не найдены в предложении IN - mysql - PullRequest
1 голос
/ 06 апреля 2020

У меня есть пользовательская таблица, которую я ищу по номеру телефона, в этом случае в моей таблице есть два номера телефона, один не существует, но я хочу, чтобы он возвращал 3 строки со значением «существует» «существует» и «не существует «Я пытался это, но это не работает

SELECT IFNULL(id ,'exists')
FROM users
WHERE phone_no IN ("581850412","554537361","9999999990") ;

1 Ответ

1 голос
/ 06 апреля 2020

Один из вариантов - поместить ожидаемые телефонные номера в производную таблицу, которую затем можно left join с исходной таблицей:

select
    p.phone_no
    case when u.phone_no is null then 'not exists' else 'exists' end 
from (
    select '581850412' phone_no
    union all select '554537361'
    union all select '9999999990'
) p
left join users u on u.phone_no = p.phone_no

В качестве альтернативы, вы можете поместить результаты в столбцы с условным агрегированием:

select
    case when max(phone_no = '581850412')  = 1 then 'exists' else 'not exists' end has_581850412,
    case when max(phone_no = '554537361')  = 1 then 'exists' else 'not exists' end has_554537361,
    case when max(phone_no = '9999999990') = 1 then 'exists' else 'not exists' end has_9999999990
from users 
...