Найти 1 столбец, такой же другой столбец, разные строки одной и той же таблицы - PullRequest
0 голосов
/ 02 февраля 2012

Правильн ли приведенный ниже запрос, чтобы найти столбцы, для которых HashCode является одинаковым, но PageUrl разными строками?Это в основном означало бы коллизии в моем планировании базы данных.

select T1.PageUrl,T1.HashCode from tblPages as T1 inner join
(select PageUrl,HashCode from tblPages group by PageUrl,HashCode) as T2 on
T1.PageUrl!=T2.PageUrl and T1.HashCode=T2.HashCode

Я использую 64-битный HashCode.

MS-SQL 2008 R2

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Я бы использовал CROSS JOIN с предложением WHERE вместо вашего INNER JOIN.

SELECT T1.PageUrl,T1.HashCode FROM tblPages AS T1
CROSS JOIN (SELECT DISTINCT PageUrl,HashCode FROM tblPages) AS T2
WHERE T1.PageUrl <> T2.PageUrl AND T1.HashCode = T2.HashCode

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

1 голос
/ 02 февраля 2012

Довольно близко, я бы сказал:

select T1.PageUrl,T1.HashCode from tblPages as T1 
inner join (select distinct PageUrl,HashCode from tblPages) as T2 
on T1.PageUrl <> T2.PageUrl and T1.HashCode=T2.HashCode
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...