【问题标题】:Combine multiple query合并多个查询
【发布时间】:2014-07-03 14:26:43
【问题描述】:

我正在以下查询获取考试状态是否失败、暂停和通过。页面上还有其他查询,因此我的页面有很多时间来加载。我已经优化了其他查询。

如何结合这些查询来快速获得结果?可能所有这些查询都可以使用“CASE WHEN”进行组合,有人可以帮我优化下面的查询吗?

SELECT  COUNT(*) AS countFailMT FROM questionPaper WHERE subjectTopic like 'MT%' result=0)
SELECT  COUNT(*) AS countPauseMT FROM questionPaper WHERE subjectTopic like 'MT%' result=-1)
SELECT  COUNT(*) AS countPassMT FROM questionPaper WHERE subjectTopic like 'MT%' result>=1)

SELECT  COUNT(*) AS countFailEN FROM questionPaper WHERE subjectTopic like 'EN%' result=0)
SELECT  COUNT(*) AS countPauseEN FROM questionPaper WHERE subjectTopic like 'EN%' result=-1)
SELECT  COUNT(*) AS countPassEN FROM questionPaper WHERE subjectTopic like 'EN%' result>=1)

【问题讨论】:

  • 来吧。尝试一下
  • 您的where 条件缺少and
  • 或者不要尝试任何事情,只是放松一下,让我们为您完成所有工作。

标签: mysql sql database count case


【解决方案1】:

您想使用条件聚合。这在 MySQL 中很容易:

select sum(subjectTopic like 'MT%' and result=0) as countFailMT,
       sum(subjectTopic like 'MT%' and result=-1) as countPauseMT,
       sum(subjectTopic like 'MT%' and result>=1) as countPassMT,
       sum(subjectTopic like 'EN%' and result=0) as countFailEN,
       sum(subjectTopic like 'EN%' and result=-1) as countPauseEN,
       sum(subjectTopic like 'EN%' and result>=1) as countPassEN
from questionPaper;

我假设where 子句中的条件由AND 连接,在创建问题时不知何故丢失了。

【讨论】:

    猜你喜欢
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 2017-10-09
    • 2016-04-02
    • 2015-02-02
    • 2019-07-11
    相关资源
    最近更新 更多