我有下表'人'相同的人在不同的行
id | firstname | surname | date_created
------------------------------------------------------
3 | Nelli | Schaller | 2017-08-22 20:57:19
------------------------------------------------------
4 | Carl | Schaller | 2019-06-21 08:29:45
------------------------------------------------------
48 | Nelli | Schaller | 2020-06-25 13:06:09
------------------------------------------------------
49 | Carl | Schaller | 2020-06-25 13:06:09
我想得到的是所有独特的夏勒与最大的id/最新的日期创造的价值。
我试过了
SELECT id, CONCAT(surname, ", ", firstname) AS person, date_created
FROM persons
WHERE
surname LIKE "schall%"
GROUP by firstname, surname
ORDER BY date_createdDESC, surname ASC LIMIT 0, 10
但只得到预期的前两个条目(id 3和4),但我需要48和49。正如在一些评论中提到的,在这种情况下,like语句是不必要的,但在实际生活中,它将是一个自动完成字段的来源,所以我需要类似的想法如何管理它?
3条答案
按热度按时间p1tboqfb1#
使用
NOT EXISTS
:如果选择每个组中最新一个的条件是列
date_created
然后更改:具有
muk1a3rh2#
您可以将子查询与组一起用于max id
pxyaymoc3#
这是sql server语法,但mysql可能类似。
我假设你
id
字段不需要像date_created
因为它是一个标识列,对于后者创建的记录来说,它无论如何都会更大,但显然会根据实际数据进行调整。