想象一下,你有一个包含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级别实现此目的?
答案 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
答案 2 :(得分:0)
我想,你需要在“名称”栏中使用“DISTINCT”:
SELECT DISTINCT name, id FROM table_name ORDER BY id DESC LIMIT 3;
实现此目的的另一种方法是使用“GROUP BY”作为“名称”(参见另一个答案)