我正在查询一个维护不善的建筑物数据库,其记录类似于以下内容:
ID NAME CODE
54 Building A a1234
97 Building A a1234
我正在使用以下 JPQL 语句进行查询(其中“bCodes”是建筑代码数组):
SELECT building FROM Building building WHERE building.NAME IN (:bCodes)
正如预期的那样,如果 bCodes =“a1234”,我会取回两条记录。 JPQL中有没有办法只拉回一条记录?到目前为止我找不到办法 - 似乎 GROUP BY 和 DISTINCT 在这种情况下不起作用。
我建议修复您的数据库(删除重复项并对适当的列施加唯一约束)。但是,要回答您的问题,您可以使用选择任意 id 的子查询进一步过滤查询:
SELECT building FROM Building building
WHERE building.code IN :bCodes
AND building.id = (SELECT MIN(b2.id) FROM Building b2
WHERE b2.name = building.name
AND b2.code = building.code)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)