在sql查询中使用where条件

时间:2012-02-02 16:03:50

标签: sql-server

我有像这样的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查询。

提前致谢

2 个答案:

答案 0 :(得分:4)

您可以在CROSS APPLY中定义,然后在SELECTWHERE

中引用
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

虽然我必须说我同意第一条评论 - 这是没有意义的,因为你的子查询没有与你的查询的其余部分相关联(加入)......