2013-07-03 21 views
0

我想用子查詢返回多個列。MSSQL 2012 - 在子查詢中返回多個列

E.G,

select a.name, a.age 
     from table1 a, (select b.race, b.weight from table2 b where dateDiff(dd, b.date1, b.date2) < 30) 
where a.age > 24 

你們有些人說:「只要用一個連接」 - 我不希望在DATEDIFF影響父查詢結果的子查詢。再次,我的真實查詢比這更復雜,但這應該足以解釋我的問題。

+3

那麼你爲什麼不使用連接和獲取所需的結果呢? –

+0

使用連接而不是子查詢 – Rohan

+0

請給出有關您的子查詢的更多詳細信息,以便我們可以理解您爲什麼不使用「左連接」。以目前的例子來說,Hip Hip Array給出的答案是正確的。 – Treb

回答

3

使用左連接要做到這一點,LEFT JOIN將返回NULL值

SELECT a.name, b.score, ... 
FROM (select id, name, ... from table1 where ???) a 
LEFT JOIN (select id, score, ... from table2 where ???) b on (a.id = b.id) 
WHERE clause 
+0

我可能沒有很好地解釋我的問題 - 但在這種情況下我不能使用連接。因爲我在子查詢中有幾個條件,我不想影響我的父項結果。 –

+0

@JasonWells - 你應該發佈你的實際查詢,而不是放置一個簡單的查詢並要求答案。 –

+0

嗨Sachin,我更新了我的帖子。 –