首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >where子句中的复杂约束

where子句中的复杂约束
EN

Stack Overflow用户
提问于 2016-08-04 23:52:08
回答 1查看 73关注 0票数 0

我正在尝试编写一个包含复杂约束的查询(至少对我来说是这样)。我需要从我的数据库中提取学生数据行,显示他们在三个测试(测试表中的测试A、测试B和测试C)中的分数。我需要满足以下标准:我需要学生在考试A中的分数恰好为5分,此外,他们需要在考试B和考试C中至少有4分,在考试B和考试C中的分数为5。我该如何编写它的语法呢?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-08-05 00:10:53

有几种方法可以解决这个问题。这里有一个。(为了举例,我对字段名和表结构做了一些假设):

代码语言:javascript
运行
复制
;
WITH A
as  (
    SELECT  *
    FROM    Test
    WHERE   TestID = 'A'
)
,   B
as  (
    SELECT  *
    FROM    Test
    WHERE   TestID = 'B'
)
,   C
as  (
    SELECT *
    FROM   Test
    WHERE  TestID = 'C'
)
-- Pull it all together
SELECT  A.StudentID
    ,   ScoreA = A.Score
    ,   ScoreB = B.Score
    ,   ScoreC = C.Score
FROM    A
   INNER JOIN B
        ON  A.StudentID = B.StudentID
   INNER JOIN C
        ON  A.StudentID = C.StudentID
-- Filter
WHERE   A.Score = 5
   AND  B.Score >= 4
   AND  C.Score >= 4
   AND  (B.Score = 5 or C.Score = 5)

这是基于这样的假设: A、B和C的分数都在Test表中的单独行中,并且您希望结果在同一行中包含所有三个分数。

如果它们都在同一行中,则可以跳过CTE,只使用WHERE子句,并对字段和前缀进行适当的重命名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38772064

复制
相关文章

相似问题

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