我有这张桌子:
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)