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

时间:2010-12-13 09:15:16

标签: sql mysql

想象一下,你有一个包含2列的表:ID和NAME。 ID只是一个数字,每行递增(正如您所期望的那样)。 NAME是一些随机varchar字符串。对于不同的行,NAME可以相同。现在,想象一下你想在这个表中得到3个最新的出现,其中NAME只出现一次。

例如,如果您有这些数据:

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

那么问题的结果应该是:

6   HELLO
5   QWERTY
2   TEST

是否可以在SQL级别实现此目的?

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

SELECT MAX(ID), NAME
FROM THAT_TABLE
GROUP BY NAME

请参阅:GROUP BY (Aggregate) Functions

答案 2 :(得分:0)

我想,你需要在“名称”栏中使用“DISTINCT”:

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

实现此目的的另一种方法是使用“GROUP BY”作为“名称”(参见另一个答案)