首頁 > 資料庫 > mysql教程 > 如何根據共用列找到最近的三個不同記錄 ID?

如何根據共用列找到最近的三個不同記錄 ID?

Patricia Arquette
發布: 2024-11-29 16:06:13
原創
271 人瀏覽過

How Can I Find the Three Most Recent Distinct Record IDs Based on a Shared Column?

哪些不同記錄 ID 是最新的?

在給定的資料庫表中,某些記錄透過共用列互連。目標是識別與此共享列值關聯的最新三個不同記錄標識符。

要實現此目的,請考慮下面的範例表:

id time text otheridentifier
1 6 apple 4
2 7 orange 4
3 8 banana 3
4 9 pear 3
5 10 grape 2

最初,直觀的方法可能是按 otheridentifier 列進行分組,然後按時間降序排序。但是,此方法不會產生預期的結果:

SELECT * FROM `table` GROUP BY (`otheridentifier`) ORDER BY `time` DESC LIMIT 3;
登入後複製

此查詢會錯誤地包含 id 為 3 和 1 的記錄,而不是正確的 id 4 和 2。造成這種差異的原因在於查詢執行order:分組優先於排序。

為了獲得預期的結果,更複雜的解決方案是必需:

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;
登入後複製

此修改後的查詢利用子查詢為每個不同的otheridentifier 值選擇具有最新時間值的單一id。此最佳化查詢可確保不同記錄標識符 5、4 和 2 的所需輸出。

以上是如何根據共用列找到最近的三個不同記錄 ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板