我有像这样的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查询。
提前致谢
答案 0 :(得分:4)
您可以在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 :(得分:0)
使用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
虽然我必须说我同意第一条评论 - 这是没有意义的,因为你的子查询没有与你的查询的其余部分相关联(加入)......