條件我有一個SQL查詢這樣使用其中的SQL查詢
Select col1, (select abc from table2 where def=1) as col2
From Table1 inner join table3 on Table1.id = table3.id
Where col2 = 4
的問題是,WHERE條件不起作用。我得到一個錯誤說
無效的列名稱COL2'
請幫我解決這個問題的SQL查詢。
在此先感謝
條件我有一個SQL查詢這樣使用其中的SQL查詢
Select col1, (select abc from table2 where def=1) as col2
From Table1 inner join table3 on Table1.id = table3.id
Where col2 = 4
的問題是,WHERE條件不起作用。我得到一個錯誤說
無效的列名稱COL2'
請幫我解決這個問題的SQL查詢。
在此先感謝
您可以在CROSS APPLY
定義它,然後在引用SELECT
和WHERE
SELECT col1,
col2
FROM Table1
INNER JOIN table3
ON Table1.id = table3.id
CROSS APPLY (SELECT abc
FROM table2
WHERE def = 1) C(col2)
WHERE col2 = 4
+1良好的接收沒有看到。 – Yuck 2012-02-02 16:07:25
@Martin:那可能是'CROSS JOIN',對嗎? – 2012-02-02 16:13:51
@ypercube - 是的。我在想,如果子查詢可能返回0行而不是1(這也許我應該使用'OUTER APPLY'來代替),但是'WHERE'子句可以處理這個問題。 – 2012-02-02 16:15:34
使用CTE(公共表表達式):
WITH SubQuery AS (Col2) {
SELECT
ABC
FROM
table2
WHERE
def = 1
}
SELECT
T.Col1,
S.Col2
FROM
SubQuery S,
Table1 T
INNER JOIN table3 t3
ON T.id = t3.id
WHERE
S.Col2 = 4
雖然我必須說我同意第一條評論 - 這是沒有意義的,因爲你的子查詢沒有關聯(加入)到你的查詢的其餘部分。 ..
這是您的實際查詢嗎?似乎很奇怪。子查詢不相關。 – 2012-02-02 16:05:35