下使用mysql我試圖顯示與那些沒有出現在特定時間(last_seen)設備(的SerialNo)的列表中的結果,然後只與MAX(last_seen顯示獨特的設備)。 last_seen是一個初始值,它是一個數字,當設備沒有被看到時遞增(想象分鐘)。想象一下,有一行serialno爲「L123」,last_seen爲「1」的表格,然後再過一分鐘,serialno「L123」爲last_seen「2」,等等。使用max(last_seen),結果應該顯示最高的數字或上次看到設備的時間。MySQL的不同不會過濾唯一的ID
工作,到目前爲止,但我注意到,其中的SerialNo L123的設備會顯示兩次,我怎麼能對結果進行篩選,只顯示最高last_seen?我已經嘗試了兩種使用不同的場景,但它們都不起作用。
由於我所得到的(沒有工作)
email | serialno | Last seen (min)
[email protected] | L123 | 30
[email protected] | K900 | 20
[email protected] | L123 | 1 <--yes the email is different but same serialno
至於什麼希望看到一個例子爲例
email | serialno | Last seen (min)
[email protected] | L123 | 30
[email protected] | K900 | 20
方案1:選擇在哪裏子查詢
不同SELECT
email,
serialno,
max(last_seen)
FROM
my_table
WHERE
last_seen IN (SELECT last_seen FROM my_table WHERE last_seen > 0)
AND
serialno IN (SELECT distinct serialno FROM my_table)
GROUP BY
2,1
ORDER BY
3 DESC
情景2:使用有,後羣
SELECT
email,
serialno,
max(last_seen)
FROM
my_table
WHERE
last_seen IN (SELECT last_seen FROM my_table WHERE last_seen > 0)
GROUP BY
2,1
HAVING
serialno in (SELECT distinct serialno FROM my_table)
ORDER BY
3 DESC
'組由serialno' ... – jarlh
一般GROUP BY規則說:如果指定了GROUP BY子句,SELECT列表中的每個列引用都必須標識一個分組列或者是一個集合函數的參數! – jarlh
我,使用GROUP BY 1,結果仍顯示「由於我所得到的(不工作)的例子」頂部 – xiaohouzi