mysql - 合并 SQL SELECT 结果中的列

标签 mysql sql

我正在尝试解决以下问题:

我有一个表,其中包含时间戳列和三列用于不同类型的变量。具有值的列根据条件随机填充。所以它看起来像这样:


smpl_time  float_val  num_val  str_val
15:31         10            NULL      NULL
15:32         NULL       15.4        NULL
15:33         NULL        NULL      Disabled

我想要实现的是将所有 val 字段合并到一列中并根据时间戳对它们进行排序的结果:


smpl_time merge_val
15:31        10
15:32        15.4
15:33        Disabled



到目前为止,我有一个 SELECT 只针对一个 val 类型,看起来像这样(它还包含表中每个条目共有的其他字段):

SELECT s.smpl_time AS Time,s.float_val AS Value, e.name AS Severity, m.name AS Status 
FROM sample s JOIN channel c ON c.channel_id=s.channel_id JOIN severity e ON
e.severity_id=s.severity_id JOIN status m ON m.status_id=s.status_id WHERE
s.channel_id='id' AND smpl_time BETWEEN TIMESTAMP 'startTime' AND TIMESTAMP 'stopTime';


有谁知道如何做到这一点,或者是否有可能?

干杯,

迈克

最佳答案

假设对于任何给定行只填充了三列中的一列,请使用 COALESCE功能。

SELECT smpl_time, COALESCE(float_vaL, num_val, str_val) AS merge_val
    FROM ...

关于mysql - 合并 SQL SELECT 结果中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19120606/

相关文章:

php - 在php中上传和检索图像到数据库

mysql - 从另一个表插入表时出现错误消息

mysql - 使用 hibernate session 的 saveOrUpdate 方法的奇怪之处

mysql - 替换特殊字符

mysql - 我需要临时表吗?

php - 拍卖搜索引擎 MySQL 的动态过滤器

Python MySQL - MySQLdb - 字符串中的撇号中断条目

mysql - sql min 函数和其他列

sql - MySQL截断命令-unicode字符

java - 在循环中执行 SQL 查询