2011-12-19 89 views

回答

5

从阅读DISTINCTROW的文档,它看起来像你想的存在条款或(通常为更好的性能)联接:

SELECT * FROM A 
WHERE EXISTS(SELECT * FROM B WHERE B.a_id = A.a_id) 

SELECT DISTINCT A.* FROM A 
INNER JOIN B ON A.a_id = B.a_id 
-- corrected, should be inner join here 
+1

+1用于阅读文档,但您关于'EXISTS'和'JOIN'的表现的说法不正确。 – 2011-12-19 13:44:19

+0

我发誓我已经看到他们确实存在很大差异的情况。他们当然会产生不同的执行计划。 – 2011-12-19 13:50:30

+1

看看'EXISTS'的执行计划是否作为连接(半连接)实现,并且可以是散列,合并或嵌套循环,所以没有理由期望内部连接更好。 – 2011-12-19 13:53:51

-3

SQL服务器不支持DISTINCTROW,而不是你应该使用关键字DISTINCT

但答案是克里斯·沙恩给给你想要的东西。

+0

访问也有它的行为同SQL的DISTINCT子句。 DISTINCTROW是不同的。 – 2011-12-19 14:17:21

-4

您可以改用关键字DISTINCT

+0

非常感谢。 – 2011-12-19 13:42:58