Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查找同一表的1列相同的其他列不同的行_Sql_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

Sql 查找同一表的1列相同的其他列不同的行

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

下面的查询查找哈希代码相同但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位哈希代码


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