【问题标题】:MySQL Union 2 selects 1 table and output 2 columnsMySQL Union 2 选择 1 个表并输出 2 列
【发布时间】:2012-12-13 23:49:48
【问题描述】:

我目前有 1 个表和 2 个嵌套选择,我想将两个嵌套选择合并在一起,我希望结果集显示两个不同的列,每个结果集一个(每个嵌套选择一个列)。 IE 三列共 t_stamp, R02AO11, R03AO11。这几天我一直在努力解决这个问题,任何可以帮助我的人都将不胜感激。我找到了这个例子Using SELECT UNION and returning output of two columns from one table,这对我来说没有意义——也许有点过头了。希望它不是太多的重新发布。再次感谢。 =)

Select t_stamp,
MIN(R02AO11) 
FROM
( 
SELECT 
    t_stamp,
    R02AO11
FROM 
    tag_history 
WHERE 
    from_unixtime(floor(unix_timestamp(t_stamp)/60)*60) BETWEEN '2012-11-01                                                                                          00:00:00' AND '2012-11-30 23:59:59' 
    AND (R02AO11 IS NOT NULL AND R02AO11 > 0) 
) AS min_tag_history
GROUP BY LEFT(t_stamp, 10)
UNION ## UNION ALL 
Select t_stamp, 
MIN(R03AO11) 
FROM
( 
SELECT 
    t_stamp,
    R03AO11
FROM 
    tag_history 
WHERE 
    from_unixtime(floor(unix_timestamp(t_stamp)/60)*60) BETWEEN '2012-11-01 00:00:00' AND '2012-11-30 23:59:59' 
    AND (R03AO11 IS NOT NULL AND R03AO11 > 0) 
) AS min_tag_history
GROUP BY LEFT(t_stamp, 10)
ORDER BY t_stamp

【问题讨论】:

    标签: mysql group-by union


    【解决方案1】:

    是你想多了还是我错过了什么?

    SELECT 
        t_stamp,
        MIN(CASE WHEN R02AO11 = 0 THEN NULL ELSE R02AO11 END),
        MIN(CASE WHEN R03A011 = 0 THEN NULL ELSE R03A011 END)
    FROM 
        tag_history 
    WHERE 
        from_unixtime(floor(unix_timestamp(t_stamp)/60)*60) BETWEEN '2012-11-01                                                                                          00:00:00' AND '2012-11-30 23:59:59' 
    GROUP BY LEFT(t_stamp, 10)
    

    【讨论】:

    • 正如您在我的原始查询中看到的那样,我首先尝试过滤掉零和空值,然后再在日期范围内的列上调用 min。该列包含一堆零,有时是空值,我不想调用 min ,因为我总是得到零。我想要非零和非零分钟。我也想将它们联合起来,因为在 where 子句中使用 AND 或 OR 将多个列指定为非零和非 null 不会给我正确的结果集。
    • OK - 首先忘记空值 min 忽略它们。我将编辑我的回复以提供 SQL Server 解决方案 - 它可能需要翻译
    猜你喜欢
    • 2023-03-26
    • 2012-03-19
    • 2023-03-27
    • 2016-09-19
    • 2012-11-03
    • 2014-03-12
    • 1970-01-01
    • 2013-11-05
    • 2020-07-10
    相关资源
    最近更新 更多