Mysql合并类似的行

时间:2016-12-19 23:00:41

标签: php mysql join aggregate

我有一个mysql查询,它给出了以下结果。

+-------------+---------------+---------------+--------------------+-    --------------------+------------+--------------+
| identifier  | sensor_map_id | sensor_log_id | device_post_log_id | sensor_component_id | logged_at  | sensor_level |
+-------------+---------------+---------------+--------------------+-    --------------------+------------+--------------+
| Level       |          1380 |        788551 |             107392 |                2759 | 1463690100 |        38.00 |
| Temperature |          1380 |        788552 |             107392 |                2760 | 1463690100 |       300.60 |
| Level       |          1381 |        788547 |             107392 |                2761 | 1463690100 |        46.00 |
| Temperature |          1381 |        788548 |             107392 |                2762 | 1463690100 |       299.50 |
| Level       |          1382 |        788549 |             107392 |                2763 | 1463690100 |        45.00 |
| Temperature |          1382 |        788550 |             107392 |                2764 | 1463690100 |       299.50 |
| Level       |          1383 |        100381 |              12664 |                2765 | 1454111400 |       153.00 |
| Temperature |          1383 |        100382 |              12664 |                2766 | 1454111400 |       295.20 |
| Level       |          1383 |        788553 |             107392 |                2773 | 1463690100 |        38.00 |
| Temperature |          1383 |        788554 |             107392 |                2774 | 1463690100 |       300.40 |
+-------------+---------------+---------------+--------------------+---------------------+------------+--------------+

对于每个sensor_map_id,数据基本上是重复的两次。一次为“水平”,一次为温度。列sensor_level基于标识符列引用“级别”或“温度”。显然,长期解决方案是改变这些数据的存储方式,但是现在我想采用这些结果并基本上合并共享sensor_map_id的行,然后代替sensor_level列,有两个新列,级别和温度在更有意义的同时存储当前保存在sensor_level中的值。

数据应该看起来像这样,行数减半,但每行有更多列。

+-------------+---------------+---------------+--------------------+-    --------------------+------------+---------+
| sensor_map_id | sensor_log_id | device_post_log_id | sensor_component_id | logged_at  | level        | temperature
+---------------+---------------+--------------------+-    --------------------+------------+--------------+--------
| 1380          |        788551 |             107392 |                2759 | 1463690100 |        38.00 | 300.60
| 1381          |        788547 |             107392 |                2761 | 1463690100 |        46.00 | 299.50
| 1382          |        788549 |             107392 |                2763 | 1463690100 |        45.00 | 299.50
| 1383          |        100381 |              12664 |                2765 | 1454111400 |       153.00 | 295.20
| 1383          |        788553 |             107392 |                2773 | 1463690100 |        38.00 | 300.40
+-------------+---------------+---------------+--------------------+---------------------+------------+-------------+

我想这很容易做到但是Mysql不是我的强项。在此先感谢您的帮助!

编辑:我不确定为什么这被标记为重复。另一个问题是询问数据透视表,这更复杂。

0 个答案:

没有答案