下面的查询是否正确查找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
答案 0 :(得分:1)
非常接近,我会这样做:
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
答案 1 :(得分:1)
我使用带有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
原因是优化器会为您提供更好的交叉连接查询计划。 Link to an example