У меня есть 2 таблицы: родитель и ребенок с отношением 1-N.
Person
: Id (INT), имя (VARCHAR) PersonToCompany
: Id (INT), PersonId (INT), электронная почта (Varchar)
Я хочу присоединиться к обеим таблицам, но выбрать только 1 запись из таблицы PersonToCompany
.Я знаю, что могу сделать это, например, с помощью CROSS APPLY, но у меня также есть некоторые условия.
Я хочу выбрать только определенные PersonToCompany
записи, например:
WHERE (Email LIKE '%@abc.com%' OR Email LIKE '%xyz.com%')
Теперь сложная часть - некоторые люди могут иметь 2 PersonToCompany
записей с обоими @ abc.com и @xyz.com почтовые домены.В этом случае я хочу быть уверен, что будет выбрана запись с @abc.com.Как я могу это сделать?
Это мой оригинальный подзапрос, который выбирает @abc.com ИЛИ @xyz.com без предпочтений:
CROSS APPLY (
SELECT TOP 1
PersonToCompany.Email AS Email
FROM PersonToCompany
WHERE PersonToCompany.PersonId = Person.Id
AND (PersonToCompany.Email LIKE '%@abc.com%') OR (PersonToCompany.Email LIKE '%@xyz.com%')
) PersonToCompany