我每隔几分钟就会获取和存储一次内部和外部压力读数,但是它们存储在不同的表中。此外,这些读数的确切时间也不相同。 (例如,每隔10分钟获取一次内部读数,但每5分钟获取一次外部读数,并且每次读取的时间可能每次更改几秒钟。)
内部压力表示例(请注意,此表中的时间列名为time_utc
)
+---------------------+----------+
| time_utc | pressure |
+---------------------+----------+
| 2020-02-13 00:28:51 | 1002.00 |
| 2020-02-13 00:38:49 | 1002.50 |
| 2020-02-13 00:48:55 | 1002.60 |
+---------------------+----------+
外部压力表示例
+---------------------+----------+
| time | pressure |
+---------------------+----------+
| 2020-02-13 00:27:32 | 1001.00 |
| 2020-02-13 00:32:04 | 1001.10 |
| 2020-02-13 00:37:34 | 1001.20 |
| 2020-02-13 00:47:59 | 1001.40 |
+---------------------+----------+
我想合并这些表,以便时间值在一列中,内部压力和外部压力值在单独的列中,按时间排序。
需要输出
+---------------------+-----------------+------------------+
| time | inside_pressure | outside_pressure |
+---------------------+-----------------+------------------+
| 2020-02-13 00:27:32 | | 1001.00 |
| 2020-02-13 00:28:51 | 1002.00 | |
| 2020-02-13 00:32:04 | | 1001.10 |
| 2020-02-13 00:37:34 | | 1001.20 |
| 2020-02-13 00:38:49 | 1002.50 | |
| 2020-02-13 00:47:59 | | 1001.40 |
| 2020-02-13 00:48:55 | 1002.60 | |
+---------------------+-----------------+------------------+
我尝试了一个UNION,因为它确实结合了两个表,所以这并不是我真正需要的,它失去了内部压力和外部压力之间的区别。
UNION查询
SELECT `inside_readings`.`time_utc`, `inside_readings`.`pressure`
FROM `mydatabase`.`inside_readings` AS `inside_readings`
UNION
SELECT `outside_readings`.`time`, `outside_readings`.`pressure`
FROM `mydatabase`.`outside_readings` AS `outside_readings`
UNION结果
+---------------------+----------+
| time_utc | pressure |
+---------------------+----------+
| 2020-02-13 00:27:32 | 1001.00 |
| 2020-02-13 00:28:51 | 1002.00 |
| 2020-02-13 00:32:04 | 1001.10 |
| 2020-02-13 00:37:34 | 1001.20 |
| 2020-02-13 00:38:49 | 1002.50 |
| 2020-02-13 00:47:59 | 1001.40 |
| 2020-02-13 00:48:55 | 1002.60 |
+---------------------+----------+
我也研究了联接,但是由于每个表中没有与另一个表匹配的列,因此我不确定该如何工作。
另外,当两个表中的每个表中只有大约1,000个读数时,我运行的一些联接查询给出了数十万行(因此应提供具有2,000行的输出)。
答案 0 :(得分:2)
public static void readFile() throws FileNotFoundException {
Scanner scan = new Scanner(file);
scan.useDelimiter("/|\\.");
scan.nextLine(); // required because there is one empty line at .txt start
if(scan.hasNext()) {
GrocerieList.foodList.add(scan.next());
scan.nextLine();
}
if(scan.hasNext()) {
GrocerieList.foodAmount.add(scan.next());
scan.nextLine();
}
}