簡體   English   中英

在mysql中選擇最后的不同記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM