首页 > 解决方案 > 代码错误。不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式

问题描述

我正在尝试运行此查询,但无论我做什么,我都会不断收到此错误并且无法解决。任何帮助,将不胜感激。

select
  CC.ContactID, 

from 
  Client C 
  join Contacts CC on CC.ContactID = C.ContactID 
 where 

        ClientID In (
    
                                  Select 
                                    ClientID,Sum(Total-allocated) as Bal 
                                  from 
                                    Main 
                                  Where 
                                    Total <> Allocated
                                    and NomTypeID < 10 
                                  Group By 
                                    ClientID
                                  HAVING Sum(Total-allocated) > 10
                             )

标签: sqlsyntax-error

解决方案


我不确定您使用的是哪种数据库(所以我也无法测试我的答案)。

但一般来说,当您使用时,IN您需要子查询只返回一列。

所以查询应该是(删除Sum(Total-allocated) as Bal):

select
  CC.ContactID, 

from 
  Client C 
  join Contacts CC on CC.ContactID = C.ContactID 
 where 

        ClientID In (
    
                                  Select 
                                    ClientID 
                                  from 
                                    Main 
                                  Where 
                                    Total <> Allocated
                                    and NomTypeID < 10 
                                  Group By 
                                    ClientID
                                  HAVING Sum(Total-allocated) > 10
                             )

推荐阅读