[英]Select last distinct records in mysql
我在mysql中有一個表有很多數據。我想只顯示不同的和最后保存的數據...這就是我所擁有的
CREATE TABLE amounts(
id MEDIUMINT NOT NULL AUTO_INCREMENT,
bank_id INT,
amount INT,
PRIMARY KEY (id)
) ENGINE=MyISAM;
INSERT INTO `amounts` (`id`, `bank_id`, `amount`) VALUES (NULL, '1', '100'),
(NULL, '2', '200'),(NULL, '3', '300'),(NULL, '1', '500'),(NULL, '2', '600'),
(NULL, '1', '800'),(NULL, '2', '50');
我想要這樣的結果
bank_id amount 1 800 2 50 3 300
將如何選擇查詢?
使用自聯接。 這幾乎總是比子查詢更快。
SELECT a.*
FROM amounts a LEFT JOIN amounts b ON a.bank_id = b.bank_id AND a.id < b.id
WHERE b.id IS NULL
這應該這樣做:
SELECT a.bank_id,
b.amount
FROM (SELECT bank_id,
Max(id) AS id
FROM amounts
GROUP BY bank_id) a
INNER JOIN amounts b
ON b.id = a.id
結果
| BANK_ID | AMOUNT | -------------------- | 1 | 800 | | 2 | 50 | | 3 | 300 |
您可以使用子查詢為每個bank_id選擇最大ID,然后選擇此子查詢返回其ID的所有行:
SELECT amounts.*
FROM amounts
WHERE id IN (select max(id)
from amounts
group by bank_id)
ORDER BY bank_id
請看這個小提琴 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.