sql - select中子查询语句的where子句

标签 sql sql-server-2008-r2

假设我有一个这样的查询:

   Select col1, 
          col2, 
          (select count(smthng) from table2) as 'records'
   from table1

我想将它过滤为“记录”列不为空。

我不能做到这一点:
         Select col1, 
                col2, 
               (select count(smthng) from table2) as 'records'
          from table1
        where records is not null  

我想出的最好方法是将此结果集写入表值参数,并对该结果集进行单独查询。有任何想法吗?

最佳答案

只需将其移至派生查询即可。您不能在 WHERE 子句中使用在 SELECT 子句中定义的列。

Select col1, col2, records
from
(
    Select col1, 
           col2, 
           (select ..... from table2) as records
    from table1
) X
where records is not null;

关于sql - select中子查询语句的where子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13261071/

相关文章:

sql - 如何避免可空 JSON 列上的​​扫描对 : <nil> *json. RawMessage 错误?

database - SQL Server 2008 R2 VB.net 连接

c# - 重命名数据库并在显示数据库已存在错误中以旧名称创建数据库

sql-server - 压缩成组出现的相似行并保持顺序

mysql - 如何使用 SQL 的表父子关系仅选择一代层次树?

mysql - 查询左连接还是数据插入?

c# - 使用 SqlConnectionStringBuilder 指定端口?

Sql 查询以获取每种类型的最大 ID 号的记录

mysql - 将第二行移动到第一行,之后所有记录都遵循 SQL 中相同的顺序

php - 如何将新行的 id 插入到另一个链接表中?