Я тратил много времени на googleing и искал хороший способ решить мою проблему, но ничего не могу найти.SQL Server и DISTINCT
У меня есть две таблицы: table1 и table2, и я хочу найти все уникальные письма в таблице1, которых нет в таблице2.
Первый запрос возвращает результат Int 1420, а второй запрос возвращает набор строк с общим количеством в 1431
Как это возможно? Думаю, это связано с тем, что я выбираю имя и статус?
select
Count(DISTINCT(Email))
from
table1 t1
where
t1.siteId = 4
and t1.Email not in (select Email from table2 t2 where t2.SiteId = 4)
go
WITH MyPage AS
(
SELECT DISTINCT(t1.Email),
t1.Name,
t1.[Status],
ROW_NUMBER() OVER (partition by t1.Email ORDER BY t1.Name) AS Apperences,
ROW_NUMBER() OVER (ORDER BY t1.Name) AS RowNumber
FROM
table1 t1
WHERE
t1.siteId = 4
AND t1.Email NOT IN (SELECT Email FROM table2 t2 WHERE t2.SiteId = 4)
)
SELECT
Email, Name, [Status]
FROM
MyPage
WHERE
RowNumber => 0 and RowNumber <= 50000
Я знаю, что я мог бы добавить «отчетливый» на последнем выбрать, но это было завинтить подкачки, что я хотел бы иметь ...
[ 'DISTINCT'] (http://dev.mysql.com/doc/refman/5.0/en/distinct-optimization.html) применяется ко всем столбцам в' п SELECT', независимо от того, имеются или нет эти круглые скобки. – Aiias
Okey, так почему же возникает другой результат, когда я добавляю поле имени? Есть ли способ сделать это? Просто применить одно к одному полю? –
Если у вас есть 2 разных имени с тем же адресом электронной почты, на который вы должны вернуться? –