我是SQL新手,但我很確定這裏發生了一些奇怪的事情。我有一個帶有4列(RoomNum,EventName,EventStatus,EventDateTime)的表(eventtable)的MySQL數據庫。同一張桌子上的兩個查詢顯示具有不同值的相同行嗎?
某些EventNames會隨着EventStatus在不同時間切換ON和OFF而重複。我想獲得最新的條目,以便我有「當前」的狀態,所以我用:
select RoomNum, EventName, EventStatus, max(EventDateTime) as MaxDate
from eventtable where eventName = "DND"
group by RoomNum
,導致:
只是爲了確保一切正常,我檢查每個房間,以確保它是給最新的一個用:
SELECT * FROM `eventtable`
where RoomNum = "070#" and eventname = "DND" /*where "#" is a specific digit*/
order by eventdatetime asc
第一個看起來很不錯:
但其他人不這樣做! (該EventStatus是錯誤的,即使時間是正確的):
我不明白的是,EventDateTime匹配它告訴我,我在看同一行的數據,但是又如何能內部值(EventStatus)是不同的?
請幫忙。謝謝。
確實如此!您的查詢不僅可以工作(我已手動檢查條目),它的運行速度也比我的JOIN過濾嘗試速度快。現在我只需要剖析你的代碼,試着理解你在做什麼。僅供參考 - 使用INNER JOIN,因此我的第一張表格可以包含所有列,並在計算機上顯示正確的數據需要40秒。這個搜索需要1.4s!謝謝。 – janson