第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

選擇3條最新記錄,其中一列的值是不同的

選擇3條最新記錄,其中一列的值是不同的

哆啦的時光機(jī) 2019-11-30 10:37:47
我有下表:    id       time      text      otheridentifier    -------------------------------------------    1        6         apple     4    2        7         orange    4    3        8         banana    3    4        9         pear      3    5        10        grape     2我想做的是選擇3條最近的記錄(按時間desc),它們的otheridentifiers是不同的。因此,在這種情況下,結(jié)果將是id:5、4和2。id= 3將被跳過,因為有相同otheridentifier字段的最近記錄。這是我嘗試做的事情:SELECT * FROM `table` GROUP BY (`otheridentifier`) ORDER BY `time` DESC LIMIT 3然而,我最終得到的行id= 5,3,和1而不是5,4,2按預(yù)期方式。有人可以告訴我為什么這個查詢不會返回我期望的結(jié)果嗎?我嘗試將ORDER BY更改為ASC,但這只是將返回的行重新排列為1、3、5。
查看完整描述

3 回答

?
慕俠2389804

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


查看完整回答
反對 回復(fù) 2019-11-30
?
陪伴而非守候

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


查看完整回答
反對 回復(fù) 2019-11-30
?
慕絲7291255

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


查看完整回答
反對 回復(fù) 2019-11-30
  • 3 回答
  • 0 關(guān)注
  • 553 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號