微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MySQL 加入/联合

如何解决MySQL 加入/联合

我有两个表格,其中包含来自两个测量设备的测量数据(表格结构由数据采集软件给出)。两者具有相同的结构:一列“ID”,一列“TIME”,时间戳以 2 小时为步长,一列测量数据名为“upltu12_plt”。大多数时候只有一个设备处于活动状态,因此另一个设备此时没有行。但有时两者都处于活动状态并且有测量值。我尝试以这样的方式组合来自两个表的测量数据,我有列 TIME、upltu12_plt_1 和 upltu12_plt_2(如果一次没有设备的测量值,则包含 NULL) wanted result。 我试过

SELECT TIME,upltu12_plt AS 'upltu12_plt_1',NULL AS 'upltu12_plt_2' FROM sx1batt101m_c2h1_0001
UNION
SELECT TIME,NULL AS 'upltu12_plt_1',upltu12_plt AS 'upltu12_plt_2' FROM sx2batt102m_c2h1_0001 
ORDER BY TIME ASC

带来了这个结果Screenshot of result。这些列正如我所希望的那样,但是当两个设备在一个时间戳上都有数据时,会有两行。

我也试过

(SELECT A.TIME AS TIME1,A.upltu12_plt,B.TIME AS TIME2,B.upltu12_plt FROM sx1batt101m_c2h1_0001 as A LEFT JOIN sx2batt102m_c2h1_0001 AS B ON A.TIME=B.TIME 
UNION 
SELECT A.TIME,B.TIME,B.upltu12_plt FROM sx1batt101m_c2h1_0001 AS A RIGHT JOIN sx2batt102m_c2h1_0001 AS B ON A.TIME=B.TIME)
ORDER BY TIME1 ASC

在这sql 语句中,有两列带有时间戳 (Result)。 谁能告诉我是否可以仅使用 sql 语句解决我的问题以及我必须使用什么语句? 亲切的问候 Jan-Hendrik

解决方法

我认为您可能正在寻找的不是使用 UNION 而是使用 CROSS JOIN。 Check this resource out.

,

欢迎来到 S/O。您需要的是完全连接(链接显示完全/交叉之间的差异)

Full Join vs Cross Join

完全连接,其中基于同一时间的连接将始终来自任一侧,但如果它们存在于两侧,则会给出我认为您正在寻找的内容。

SELECT
      A.TIME AS TIME1,A.upltu12_plt   A_Reading,B.upltu12_plt   B_Reading
   FROM 
      sx1batt101m_c2h1_0001 as A 
         FULL OUTER JOIN sx2batt102m_c2h1_0001 AS B 
            ON A.TIME = B.TIME 
   ORDER BY 
      A.TIME1
,

由于 MySQL 不支持 FULL OUTER JOIN,您必须结合使用 LEFT JOINRIGHT JOIN 以及 UNION 才能获得所需的结果。

SELECT A.TIME,A.upltu12_plt AS upltu12_plt_1,B.upltu12_plt AS upltu12_plt_2
FROM   sx1batt101m_c2h1_0001 AS A
       LEFT JOIN sx2batt102m_c2h1_0001 AS B
               ON A.TIME = B.TIME
UNION
SELECT B.TIME,B.upltu12_plt AS upltu12_plt_2
FROM   sx1batt101m_c2h1_0001 AS A
       RIGHT JOIN sx2batt102m_c2h1_0001 AS B
               ON A.TIME = B.TIME; 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?