3 回答

TA貢獻(xiàn)1719條經(jīng)驗 獲得超6個贊
它不會返回您期望的結(jié)果,因為分組是在排序之前發(fā)生的,這從子句在SQL語句中的位置反映出來。不幸的是,您將不得不變得更加幻想才能獲得想要的行。嘗試這個:
SELECT *
FROM `table`
WHERE `id` = (
SELECT `id`
FROM `table` as `alt`
WHERE `alt`.`otheridentifier` = `table`.`otheridentifier`
ORDER BY `time` DESC
LIMIT 1
)
ORDER BY `time` DESC
LIMIT 3

TA貢獻(xiàn)1757條經(jīng)驗 獲得超8個贊
您可以將表本身聯(lián)接起來以過濾per的最后一個條目otheridentifier,然后采用該表的前3行:
SELECT last.*
FROM `table` last
LEFT JOIN `table` prev
ON prev.`otheridentifier` = last.`otheridentifier`
AND prev.`time` < last.`time`
WHERE prev.`id` is null
ORDER BY last.`time` DESC
LIMIT 3

TA貢獻(xiàn)1859條經(jīng)驗 獲得超6個贊
我有類似的要求,但選擇標(biāo)準(zhǔn)更高。使用其他一些答案,我無法確切獲得所需的信息,但是我發(fā)現(xiàn)您仍然可以像下面這樣執(zhí)行GROUP BY和ORDER BY:
SELECT t.* FROM (SELECT * FROM table ORDER BY time DESC) t
GROUP BY t.otheridentifier
添加回答
舉報