我想选择最后一个状态名是谁的人(这里是约翰)?我不知道该怎么做。
表人员
id |name |status
1 | john | 1
2 | fritz | 1
3 | fritz| 2
表状态
id |statusname
1 | first
2 | second
3 | third
我在JPQL中尝试了以下请求:
SELECT DISTINCT p FROM Person p INNER JOIN p.status WHERE status.statusname="first";
我在结果中得到了所有三行。请问有什么不对?
答案 0 :(得分:1)
如果始终存在第一个状态并且无法删除此状态,那么您的最后 首先
SELECT p.name
FROM Person p
GROUP BY name
HAVING COUNT(status) = 1
通用解决方案可能如下所示
SELECT name
FROM Person
GROUP BY name
HAVING MAX(status) = (
SELECT id FROM status WHERE statusname = 'first'
);
在那里你可以用保存你的状态名的主变量替换'first'。