Mysql
不同的描述
我有以下數據庫:
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)