首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在where语句中使用子查询

在where语句中使用子查询
EN

Stack Overflow用户
提问于 2013-02-22 05:24:11
回答 2查看 66关注 0票数 0

我的存储过程有问题。

一般的想法是能够选择4个参数(可以选择或不选择)并返回正确的结果。因为我真的不能使用两个参数(校园ID是必填的),所以我没有费心去做其他的。

问题出在我的where子句中

代码语言:javascript
运行
复制
       WHERE ac.AC_Campus_ID = @CampusID AND
          (

                ac.AC_College_ID IN (CASE @CollegeID
                WHEN 0 THEN (select distinct AC_College_ID from AC_Academic_Choice)
                ELSE @CollegeID
                END))

这是一个例子。我选择一个校园id为1,我选择一个学院id为1。查询将返回这两个参数的结果。

当我选择一个校园id为1和一个学院id为0时。我得到“子查询返回多个值。当子查询跟在=,!=,<,<=,>,>=之后,或子查询被用作表达式时,这是不允许的。”

当我做第二次输入时,我想要系统中每个大学id的所有结果。

你有什么办法让它工作吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-22 05:33:00

以下是重写它以获得您想要的结果的一种方法:

代码语言:javascript
运行
复制
...
WHERE ac.AC_College_ID IN (
  SELECT DISTINCT AC_College_ID 
  FROM AC_Academic_Choice
  WHERE AC_College_ID = 
    CASE @CollegeID
      WHEN 0
      THEN AC_College_ID 
      ELSE @CollegeID 
    END
)
票数 3
EN

Stack Overflow用户

发布于 2013-02-22 05:32:28

尝试:

代码语言:javascript
运行
复制
   WHERE ac.AC_Campus_ID = @CampusID AND
      (SELECT 1 WHERE ac.AC_College_ID IN 
            (CASE @CollegeID
            WHEN 0 THEN (select distinct AC_College_ID from AC_Academic_Choice)
            ELSE @CollegeID
            END
            )
      )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15012510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档