Проверить, существует ли дубликат в столбце и сделать что-то sql

У меня есть столбец адреса электронной почты в моей базе данных, я хочу проверить, есть ли дубликаты, выполнить TASK FAILURE PATH, и если есть только одна запись, выполнить TASK SUCCESS PATH.

    DECLARE @DuplicateCount int=
            (
                SELECT COUNT(*)
                FROM tblWebPortal_Login
                WHERE Email = 'abe@abeprakash.com' 
                GROUP BY email
                HAVING COUNT(email) > 1
            );
            select @DuplicateCount 

if @DuplicateCount is null
TASK SUCCESS PATH
else
TASK FAILURE PATH

У меня проблема в том, что @DuplicateCount возвращает нуль, если есть только одна запись и если адрес электронной почты отсутствует. то есть ЗАДАЧА A выполняется для адреса электронной почты, который присутствует только один раз (что является правильным), однако ЗАДАЧА A выполняется, если в электронном письме содержатся некоторые данные для мусора (что неверно)

Я использую SQL Server 2016

2 ответа

Решение

Просто получите count(), GROUP BY пункт не является необходимым, если вы фильтруете только один адрес электронной почты. И HAVING пункт порождает NULLs.

DECLARE @DuplicateCount integer = (SELECT count(*)
                                          FROM tblWebPortal_Login
                                          WHERE Email = 'abe@abeprakash.com');

IF @DuplicateCount = 1
BEGIN
  -- TASK SUCCESS PATH
END
ELSE
BEGIN
  -- TASK FAILURE PATH
END;

Таким образом, путь успеха вводится только тогда, когда адрес электронной почты существует ровно один раз. Если он не существует вообще или несколько раз, вводится путь отказа.

Прежде всего, избегайте группового, а наличие этого не является необходимым в вашем обществе.

Второй не использовать счетчик (*) использовать счетчик (электронная почта)

DECLARE @DuplicateCount int=
            (
                SELECT COUNT(email)
                FROM tblWebPortal_Login
                WHERE Email = 'abe@abeprakash.com' 

            );
            select @DuplicateCount 

if @DuplicateCount is null
TASK SUCCESS PATH
else
TASK FAILURE PATH 
Другие вопросы по тегам