2012-07-16 21 views
2

我有一個表像的模式:SQL - 右加入或者存在/凡在子查詢

tblRecords

RecordID | ResultID | RecordName 

另一個表是tblResults

ResultID | ResultTime | Result Date 

tblRecords包含一些ResultID的記錄,它不在tblResults

我想要做的是從tblRecords獲得所有值,其中ResultIDtblResults

這可能與一個連接?
或者我必須使用子查詢?

+1

EM ..自然連接? ;) – 2012-07-16 15:26:20

回答

4

是的,它可以做到。請嘗試下面的查詢:

SELECT tRec.* 
FROM tblRecords tRec 
INNER JOIN tblResults tRes 
ON tRec.ResultId = tRes.ResultId 
+0

是的,但爲什麼'DISTINCT'? – 2012-07-16 15:53:10

+1

如果tblResults中存在多個關聯記錄,則會爲tblRecords返回重複記錄。 – 2012-07-16 15:55:44

+1

但它是引用'tblResults'的'tblRecords',而不是其他方式。 'tblRecords'行不可能引用多個'tblResults'行,因此不能有任何重複。也就是說,我得出結論:最多可以引用一行,因爲'tblResults.ResultID'最有可能是主鍵(因此''tblResults'中不能有多於一行'ResultID') 。 – 2012-07-16 16:01:28

0

是的。使用表連接。

tblRecords.RecordID = tblResults.ResultID 
1

從tblRecords得到的所有數據,而且ResultID是tblResults

那就試試這個:

SELECT * 
FROM tblRecords 
WHERE ResultID IN (SELECT DISTINCT ResultID FROM tblResults) 
+0

如果一個表有大量的記錄,使用IN會降低性能。 – Farhan 2012-07-16 15:31:48

+1

@MuhammadGhazi - 不在SQL Server中。這比進行連接更有效,並消除了重複之處。子查詢中的「DISTINCT」是不必要的。 – 2012-07-16 15:35:44