MySQL Select 生成新列

标签 mysql

我有这样一个 MySQL:

+----+----------+---------+---------------------+
| id | event    | seconds | date                |
+----+----------+---------+---------------------+
|  5 | open     |      0  | 2014-10-20 16:00:00 |
|  5 | assign   |      5  | 2014-10-20 16:00:05 |
|  5 | complete |     10  | 2014-10-20 16:00:15 |
|  5 | close    |     22  | 2014-10-20 16:00:37 |
|  6 | open     |      0  | 2014-10-20 17:00:00 |
|  6 | assign   |      7  | 2014-10-20 17:00:07 |
+----+----------+---------+---------------------+

有没有不用写程序逻辑就返回这个的select语句?

+----+----------+---------+-----------+---------+
| id | open     | assign  | complete  | close   |
+----+----------+---------+-----------+---------+
|  5 |    0     |    5    |    10     |   22    |
|  6 |    0     |    7    |           |         |
+----+----------+---------+-----------+---------+

最佳答案

SELECT id,
SUM(CASE WHEN event='open' THEN seconds ELSE 0 END) as open,
SUM(CASE WHEN event='assign' THEN seconds ELSE 0 END) as assign,
SUM(CASE WHEN event='complete' THEN seconds ELSE 0 END) as complete,
SUM(CASE WHEN event='close' THEN seconds ELSE 0 END) as close
FROM t
GROUP BY id

我假设你需要每个 id 的秒数总和,它可以是最大值、最小值等。

关于MySQL Select 生成新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26595968/

相关文章:

c# - 如何在 while 语句之外存储来自读取器的变量

php - 选择....用于更新和 if 语句与 php

编辑 my.ini 后 MySQL 无法在 Windows 中打开

javascript - 在以下情况下如何使用 AJAX 实现删除功能?

mysql - WHERE 连接表

php - Bootstrap Toggle 使用 AJAX 无需刷新页面即可更改 MySQL TINYINT

php - 我如何使用 Node.js 或 PHP 实时监听 MySQL 数据库变化

php - Mysql 插入不起作用并且没有给出错误

php - 无法与php建立数据库连接

mysql - 选择查询但显示第 3 条记录的结果