我正在做一些事情,我需要能够从两行中选择多列的 MAX,它们在另一个表上的 ID 中匹配,由FROM_UNIXTIME(date, "%m%")
.
我在上面整理了一个 SQL Fiddle 示例。
在示例中,我有两个表,Pairs
并且Data
. 这些对由id
(非主键)连接。所以,TestDeviceA
两者TestDeviceB
都有一个id
1;TestDeviceC
两者TestDeviceD
都有一个id
2。
对于Data
表中的每个不同日期,我需要提取data1
两个设备之间的列的最大值、data2
列的最大值,对于data3
.
例子:
date | device | data1 | data2 | data3
-------------------------------------------------
1234 TestDeviceA 222 234 555
1234 TestDeviceB 292 204 155
预期的结果将类似于以下内容:
1234 TestDeviceA/TestDeviceB 292 234 555
示例查询:
SELECT FROM_UNIXTIME(date, "%m"), FROM_UNIXTIME(date, "%d"), p.id as PairID, GROUP_CONCAT(device SEPERATOR '/'), MAX(data1), MAX(data2), MAX(data3)
FROM Data LEFT JOIN Pairs p on p.devicename=device
GROUP BY p.id,date
我觉得查询中可能缺少一些东西。
什么是更有效和更准确的方法?