【问题标题】:MySQL - Postgres: Wrapping multiple rows into oneMySQL - Postgres:将多行包装成一个
【发布时间】:2014-06-23 09:14:06
【问题描述】:

以下是当前行的一个示例:

id    sdate    subject    exam1    assgn1    overallmark    result    credits
____________________________________________________________________________
 1    082013   Math      40.0      0.00       33             F         7.50
 2    082013   Math      0.0       25.00      33             F         7.50
 3    082013   Science   80.0      0.00       76             P         7.50

这就是我想要的:

id    sdate    subject    exam1    assgn1    overallmark    result    credits
____________________________________________________________________________
 1    082013   Math      40.0      25.00       33             F         7.50

要点 我想将同一主题的多个结果包装到一行中,最好的方法是什么?我尝试过使用GROUP_CONCAT,但我的 mysql 知识并不完全符合要求。

我一直在使用一个简单的 MySQL 查询来让这个结果显示在我的第一个代码块中:

SELECT * FROM exam_results WHERE sdate = :sdate AND studno = :studno

编辑*

感谢用户@echo_Me,此解决方案有效:

select id ,sdate,subject,sum(exam1)exam1,sum(assgn1)assgn1,overallmark,result,
credits from exam_results group by studno,subject

但是,在 postgres 中可以使用相同的语法吗?我将如何相应地更改它以适应 postgres 安装?

【问题讨论】:

  • 你真的认为为同一个学生插入2行来存储exam1assgn1标记是必要的,如果不是,那么为每个学生只插入一行,你的问题就解决了跨度>
  • 不幸的是,我无法控制数据库架构或结果的插入方式。

标签: mysql postgresql


【解决方案1】:

试试看:

  select id ,sdate,subject,sum(exam1)exam1,sum(assgn1)assgn1,overallmark,result,
  credits
  from exam_results
  group by studno,subject

【讨论】:

  • 看来已经完成了,我将在我的实际环境中进行测试,看看效果如何。谢谢!
  • 出于兴趣,这个相同的语法可以用于 postgres 安装吗?
  • @CianGallagher:不,Postgres 不允许使用无效的group by。 MySQL 中返回的值是“随机的”(MySQL 称之为“不确定”:mysqlperformanceblog.com/2006/09/06/…
  • @a_horse_with_no_name 感谢您的回复。我将如何重写上述查询以使用 psql?
【解决方案2】:

我不确定你想要达到什么目的,但你可以看看这篇关于 group concat 的帖子:CONCAT with GROUP_CONCAT in mysql

从您的预期结果来看,我并没有真正看到 group_concat 需要。如果您想获得exam1 的最小值,只需Group By credits 或sDate 并选择MIN(exam1)。 当您希望将来自不同行的值合并为一个返回时,可以使用组连接。例如:总分 = 33,33,76

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 2015-04-30
    相关资源
    最近更新 更多