Sql 查找同一表的1列相同的其他列不同的行
下面的查询查找哈希代码相同但PageUrl不同行的列是否正确?这基本上意味着数据库规划中的冲突Sql 查找同一表的1列相同的其他列不同的行,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,下面的查询查找哈希代码相同但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位哈希代码 M
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位哈希代码
MS-SQL 2008 R2非常接近,我会这样说:
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
我会使用带有WHERE子句的交叉连接,而不是内部连接
这样做的原因是优化器将通过交叉连接为您提供更好的查询计划 仅供参考!=是MySQL,是我一直在使用的MS SQLI!=它总是与MSSQL一起工作。有什么区别吗?@Splash-X:请告诉你,标准SQL不等于运算符。它应该适用于所有SQL产品,也可以在MySQL和SQL Server中正常工作。那个!=不是标准的,但在MySQL中工作,这与OP的查询有何不同?他的问题是他的查询是否正确,事实确实如此。我建议在内部查询中使用distinct而不是group by,并使用SQL Server而不是=
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