2
我的東西,我需要能夠從兩行,在那裏他們的ID匹配另一個表,由FROM_UNIXTIME(date, "%m%")
分組選擇多列的最大工作約束兩排。MAX由另一臺
我放在一起的SQL小提琴上面的例子。
在這個例子中我有兩個表,Pairs
和Data
。在對由一個id
(非主鍵)接合。所以,TestDeviceA
和TestDeviceB
都有1的id
; TestDeviceC
和TestDeviceD
都具有對於在Data
表中的每個不同日期的2.
一個id
,我需要拉兩個設備之間的data1
列的max,則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
我覺得有可能是一些我在想念在查詢中。
什麼是更有效和準確的方法來處理它?
你的方法似乎就好了。這可能是在MySQL中最好的方式 - 正確使用聚合MAX()和GROUP BY。 –
感謝您的迴應。出於某種原因,每隔一段時間的MAX()似乎並沒有被正確地聚集。現在調試它。 –