我有一个包含这些字段的表格:
ID (Primary key)
Name
Some more data fields
我想编写一个查询,给定一个Name会给我所有ID大于那个名称的行的行。
(是的我知道这个名字并不是唯一的...在系统中。)
我想要类似的东西:
select *
From SomeTable as x
WHERE x.ID> (Select ID from SomeTable as y where y.Name LIKE :param)
或:
SELECT x
FROM SomeTable as x
JOIN SomeTable as y ON x.ID > Y.ID
WHERE Y.Name LIKE :Param
当然我想要自我加入,而不是子查询。
顺便说一句。 标准也是如此......
答案 0 :(得分:1)
您无法通过HQL中的联接来执行此操作。
但是这个HQL查询没问题:
select f from Foo f where f.id > (select f2.id from Foo f2 where f2.name = :name)
如果子选择可能会返回多个ID,您也可以使用
select f from Foo f where f.id > all (select f2.id from Foo f2 where f2.name = :name)