Mysql

不同的描述

  • September 26, 2019

我有以下數據庫:

id | remote_id | title | description
-------------------------------------
1  | 12341234  | test  | test-description
2  | 4535234   | blah  | testestetetst
3  | 12341234  | test  | test-description2
4  | 3454656   | qsffq | testqfsfqgfgsdffgfd

我正在嘗試選擇每個唯一 remote_id 的描述(並且只有描述)。“獲勝”描述應該是最高的 id。像這樣:

id | remote_id | title | description
-------------------------------------
2  | 4535234   | blah  | testestetetst
3  | 12341234  | test  | test-description2
4  | 3454656   | qsffq | testqfsfqgfgsdffgfd

使用以下程式碼正確返回每個唯一的 remote_id

SELECT DISTINCT(remote_id) FROM table ORDER BY id DESC

但這會返回重複項

SELECT DISTINCT(remote_id),description FROM table ORDER BY id DESC

如何過濾 remote_id 上的不同值,但只選擇查詢中具有最高 id 的描述?

任何幫助將不勝感激!

編輯1:格式化

編輯2:使用以下版本:5.7.27-0ubuntu0.18.04.1

一種方法是使用派生表(子查詢)並獲取id每個唯一remote_id值的所有最大值。然後我們可以JOIN對原始表進行這個子查詢以獲取對應於最高的行id

SELECT 
 t.*
FROM table_name AS t 
JOIN (SELECT 
       remote_id, 
       MAX(id) AS max_id 
     FROM table_name
     GROUP BY remote_id) AS dt 
 ON dt.remote_id = t.remote_id 
    AND dt.max_id = t.id 

另一種方法是在子句中使用相關子查詢。WHERE我們將獲得Max()每個的 id 值remote_id並與之匹配。

SELECT 
 t.*
FROM table_name AS t 
WHERE t.id = (SELECT MAX(t2.id) 
             FROM table_name AS t2 
             WHERE t2.remote_id = t.remote_id)

引用自:https://dba.stackexchange.com/questions/249704