ORM查询一个表中有两个字段相同时,只获取某个值最大的一条
阅读原文时间:2023年09月02日阅读:5

Table表如下:

获取表中name和hex值相同时age最大的那一条

ORM写法,两次查询

ids = table.values('name', 'age').annotate(id=Max('id')).values_list('id', flat=True)
res = table.filter(id__in=ids).order_by('id')

SQL写法,未尝试

SELECT
SUBSTRING_INDEX(GROUP_CONCAT(CONCAT_WS(',', name, Hex, Age) ORDER BY ID DESC SEPARATOR '|'), '|', 1)
FROM
table_name
GROUP BY
name, Hex