从具有条件的表中查找最大id

nhn9ugyo  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(387)

有一个包含以下列的表:id、name、age。我需要找到id和display name和id的最大值,其中name以a开头。我使用下面的查询来获得结果,但是这个查询不返回唯一的行。its将从db检索名称以a开头的所有行,所有id都将列在结果集中。我的查询hql是:

SELECT t.name, MAX(t.id) 
FROM table t 
WHERE t.name LIKE 'A%' AND t.age= :age
GROUP BY t.name
mbzjlibv

mbzjlibv1#

我想你想要这个:

SELECT t.*
FROM table t 
WHERE t.name LIKE 'A%' AND t.age= :age
ORDER BY t.id DESC
LIMIT 1;
ar7v8xwq

ar7v8xwq2#

where子句是根据所需的条件过滤数据的,但是它是按名称而不是第一个字母进行选择和分组的。
所以你需要做的是两个步骤。首先报告满足条件的最大值(id)。接下来,您需要将该id连接回数据以检索名称。
因此,这是您第一次进入子查询的奇妙世界:

SELECT t1.*
FROM
table t1
INNER JOIN 
(
  SELECT MAX(id) AS max_id
  FROM table
  WHERE name LIKE 'A%' AND age= :age
) AS toprecord
ON t1.id = toprecord.max_id

相关问题