проверить, существует ли дубликат в столбце и сделать что-то sql - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть столбец адреса электронной почты в моей базе данных, я хочу проверить, есть ли дубликаты, выполнить 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 возвращает значение NULL, если есть только одна запись и отсутствует адрес электронной почты. то есть ЗАДАЧА A выполняется для адреса электронной почты, который присутствует только один раз (что правильно), однако ЗАДАЧА A выполняется, если в сообщении электронной почты содержатся некоторые ненужные данные (что неверно)

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

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

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

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

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 
0 голосов
/ 13 сентября 2018

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

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;

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

...