我正在做一些事情,我需要能够从两行中选择多列的 MAX,它们在另一个表上的 ID 中匹配,由FROM_UNIXTIME(date, "%m%").
我在上面整理了一个 SQL Fiddle 示例。
在示例中,我有两个表,Pairs并且Data. 这些对由id(非主键)连接。所以,TestDeviceA两者TestDeviceB都有一个id1;TestDeviceC两者TestDeviceD都有一个id2。
对于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
我觉得查询中可能缺少一些东西。
什么是更有效和更准确的方法?