有一个包含以下列的表: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
mbzjlibv1#
我想你想要这个:
SELECT t.* FROM table t WHERE t.name LIKE 'A%' AND t.age= :age ORDER BY t.id DESC LIMIT 1;
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
2条答案
按热度按时间mbzjlibv1#
我想你想要这个:
ar7v8xwq2#
where子句是根据所需的条件过滤数据的,但是它是按名称而不是第一个字母进行选择和分组的。
所以你需要做的是两个步骤。首先报告满足条件的最大值(id)。接下来,您需要将该id连接回数据以检索名称。
因此,这是您第一次进入子查询的奇妙世界: