특정 사용자를 위해 테이블을 검색하는 쿼리를 작성하고 있습니다.이 테이블은 정확한 일치 항목과 일치하는 항목을 제공합니다."순위"가있는 SQL 통합
본질적으로 사용자 이메일 주소는 고유하므로이 행 이상을 반환 할 필요는 없지만 모든 잠재 사용자를 일치시킬 확률의 '순위'와 함께 모든 잠재 사용자를 반환해야합니다.
가능한 한 효율적으로 쿼리를 작성하고이 시점에서 필자는 커서를 사용하지 않아야 커서를 피할 수 있습니다. 다음은 현재 쿼리의 예입니다. 이메일 주소가 일치하는 경우
SELECT
tt.userId,
tt.UserName,
ad.*,
1 AS 'Rank'
FROM
Users.User tt
LEFT JOIN
General.[Address] ad ON tt.AddressId = ad.AddressId
WHERE
tt.EmailAddress = @EmailAddress
UNION
SELECT
tt.userId,
tt.UserName,
ad.*,
2 AS 'Rank'
FROM
Users.User tt
LEFT JOIN
General.[Address] ad ON tt.AddressId = ad.AddressId
WHERE
tt.LastName = @LastName
AND tt.BirthDate = @DOB
은 분명히 여기에 주요 결함은, 동일한 사용자는 등 두 번째 쿼리에 표시 될 것입니다. 또한 이러한 검색 순위를 매길 필요가있을 때 노동 조합은 행을 복제본과 일치시키지 않으므로 동일한 사용자를 몇 번 뒤로 가져옵니다.
모든 조언을 크게 듣습니다.
** 올바르게 이해하고 있습니까? if ** 이메일 주소를 가진 사용자가 발견되면 성 및 생년월일에 일치가 나타나지 않아야합니까? – Larnu
정확합니다. 정확히 내가 후한 것입니다. – Dan