Если вы хотите получить значение Status
или NULL
, если нет подходящей строки, вы можете использовать подзапрос:
select ( select Status from Account where username = @Username ) as Status;
Внешний select
всегда будет возвращать результат.Если подзапрос не предоставляет значение, то результатом будет NULL.
Если вы хотите другое, т. Е. Не NULL, значение по умолчанию, которое вы можете использовать Coalesce
, и подзапрос, таким образом:
select Coalesce(
( select Status from Account where username = @Username ), -- If found.
0 -- Default value if not found.
) as Status;
NB : предполагается, что существует либо одна совпадающая строка, либо нет совпадающей строки.Код не выполнится, если подзапрос вернет более одного значения.
Обратите внимание, что при запросе таблицы только один раз любое из решений исключает возможность условия гонки с другим обновлением сеанса или удалением строки для пользователя между exists
проверка и select
, который возвращает значение Status
.