所以我很好奇嵌套的SELECT是否可以引用它的外部SELECT来比较值。我无法测试或看到有关此主题的许多示例。
作为一个例子,我正在尝试编写一个查询来选择所有衣服行,这些衣服行具有给定列表中的标记(某个数字)并且具有给定时间之前的最长时间(总数)几秒钟。有问题的查询如下:
SELECT c FROM Clothes c WHERE c.tag IN :tagList
AND (c.timeOfSale = (SELECT MAX(n.timeOfSale) FROM Clothes k
WHERE (c.tag = k.tag) AND (k.timeOfSale) < (:time))) GROUP BY c.tag
比较c.tag = k.tag
有效吗?如果没有,有替代方案吗?
答案 0 :(得分:1)
@Query("SELECT b FROM Business b WHERE b <> :currentBusiness "
+ "and exists "
+ "(Select i from InterestMaster i, BusinessInterest bI where bI.interestMaster = i and bI.business = b"
+ "and i in (:userInterests))")
Page<Business> getCommunityBusiness(@Param("currentBusiness") Business currentBusiness, @Param("userInterests") List<InterestMaster> userInterests,Pageable pageable);
我正在使用上面的JPQL并且工作正常。所以是嵌套查询可以访问外部查询。
答案 1 :(得分:0)
是。它们被称为相关查询,其中子查询针对外部查询的每一行进行评估。