2011-12-19 93 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