当 ID 不同时获取唯一名称(DISTINCT ?)

Use*_*841 4 mysql select

我有这张桌子:

id  | name
1   | John
2   | John
3   | Peter
4   | Mike
5   | Mike
Run Code Online (Sandbox Code Playgroud)

我想获取唯一名称,获取列表中的最新名称。我可以去:

SELECT DISTINCT name FROM table ORDER BY id DESC LIMIT 2

这会让我:迈克和彼得。都好。但是,我还需要 ID,因此 DISTINCT 不再起作用。什么是正确的查询:

5   |   Mike
3   |   Peter
Run Code Online (Sandbox Code Playgroud)

用词:最新的 2 个独特的条目

Rol*_*DBA 10

这是查询

SELECT id,name FROM
(SELECT name,MAX(id) id FROM `mytable` GROUP BY name) A
ORDER BY id DESC LIMIT 2;
Run Code Online (Sandbox Code Playgroud)

这是一些示例数据

mysql> use test
Database changed
mysql> drop table if exists mytable;
Query OK, 0 rows affected (0.03 sec)

mysql> create table mytable
    -> (id int not null auto_increment,
    -> name varchar(20),primary key (id));
Query OK, 0 rows affected (0.12 sec)

mysql> INSERT INTO mytable (name) VALUES
    -> ('John'),('John'),('Peter'),('Mike'),('Mike');
Query OK, 5 rows affected (0.07 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM mytable;
+----+-------+
| id | name  |
+----+-------+
|  1 | John  |
|  2 | John  |
|  3 | Peter |
|  4 | Mike  |
|  5 | Mike  |
+----+-------+
5 rows in set (0.00 sec)

mysql> SELECT id,name FROM
    -> (SELECT name,MAX(id) id FROM `mytable` GROUP BY name) A
    -> ORDER BY id DESC LIMIT 2;
+------+-------+
| id   | name  |
+------+-------+
|    5 | Mike  |
|    3 | Peter |
+------+-------+
2 rows in set (0.00 sec)

mysql>
Run Code Online (Sandbox Code Playgroud)