MySQL -是否有可能使用SQL实现这一点?

mklgxw1f  于 2023-06-04  发布在  Mysql
关注(0)|答案(3)|浏览(465)

假设你有一个有两列的表:ID和名称。ID只是一个数字,每行递增(正如您所料)。NAME是一个随机的varchar字符串。不同行的名称可以相同。现在,假设您想要在这个表中获取3个最近出现的事件,其中NAME只可能出现一次。
例如,如果你有这个数据:

ID  NAME
1   HELLO
2   TEST
3   HELLO
4   HELLO
5   QWERTY
6   HELLO

那么问题的结果应该是:

6   HELLO
5   QWERTY
2   TEST

是否可以在SQL级别上实现这一点?

sg3maiej

sg3maiej1#

SELECT 
   MAX(ID), 
   Name
FROM 
   table
GROUP BY 
   Name
ORDER BY
   MAX(ID) desc
LIMIT 3
9w11ddsr

9w11ddsr2#

SELECT MAX(ID), NAME
FROM THAT_TABLE
GROUP BY NAME
ORDER BY 1 DESC

参见:GROUP BY (Aggregate) Functions

ajsxfq5m

ajsxfq5m3#

我想,你需要使用“DISTINCT”作为“name”列:

SELECT DISTINCT name, id FROM table_name ORDER BY id DESC LIMIT 3;

另一种实现方法是使用“GROUP BY”表示“name”(参见另一个答案)

相关问题