结合SQL SELECT的结果中的列

时间:2013-10-01 15:48:25

标签: mysql sql

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

我有一个带有timeStamp列的表和三列用于不同类型的变量。具有值的列根据条件随机填充。所以它看起来像这样:

  


smpl_time float_val num_val str_val
15:31   10 NULL NULL   
15时32分15.4 NULL NULL   
15:33   NULL NULL残疾人   

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

  


smpl_time merge_val   
15:31 10   
15:32 15.4   
15时33分残疾人



到目前为止,我只有一个类似于这样的val类型的SELECT(它还包含表中对于每个条目通用的其他字段):

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';


有没有人知道如何做到这一点,或者甚至可能?

干杯,

麦克

2 个答案:

答案 0 :(得分:2)

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce

COALESCE(值,...)

返回列表中的第一个非NULL值,如果没有非NULL值,则返回NULL。

的MySQL> SELECT COALESCE(NULL,1);          - > 1

的MySQL> SELECT COALESCE(NULL,NULL,NULL);          - > NULL

答案 1 :(得分:2)

假设只为任何给定行填充了三列中的一列,请使用COALESCE函数。

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