提问人:KRISTIJAN TOMASINI 提问时间:10/25/2023 更新时间:10/25/2023 访问量:21
如何在Spring Boot中访问公式内子查询中的表字段?
How to access table field in a subquery inside a formula in spring boot?
问:
为了这个问题的目的,让我们用列来定义表。列包含的数据可能重复,也可能不重复。t
c
c
现在,我想创建一个虚拟列,其中包含一个布尔值,指示此行是否重复。
例如,如果我的表包含行,则我的查询应返回该表1,1,2,3
SELECT
1 1
1 1
2 0
3 0
现在,我想出了如何检查单行是否重复。下面是执行此操作的代码:
SELECT IIF((SELECT COUNT(c) FROM [t] WHERE c = ?) > 1, 1, 0);
如果在 的位置具有给定值的行是重复的,则输出此行代码,如果不是。1
c
?
0
如果我提前知道值,这很好用。
但是,我怎样才能使它适用于整个表呢?c
我想了这样:
SELECT c, IIF((SELECT COUNT(c) FROM [t] WHERE c = ?) > 1, 1, 0) FROM [t];
因此,通过使用子查询。但问题是,我怎么知道子查询中 c
的值是多少?那么,如何让服务器在执行子查询之前读取列,以及如何传递列的值而不是上面的例子中的列呢?c
c
?
这个问题的第二部分是如何使用 Spring Data Java 持久性应用程序编程接口 (JPA) 来做到这一点?因为我没有直接执行这个查询,所以我需要 Hibernate 来制作它并为我执行它。
这是我在 Java 中的实体类:
@Entity
@Subselect(value = "select DISTINCT t.c from t t")
public class T
{
@Column(name = "c")
private Integer c;
@Formula(value = "IIF((SELECT COUNT(c) FROM [t] WHERE c = ?) > 1, 1, 0)")
private Boolean isDuplicate;
}
但是我不知道如何放置注释而不是内部注释。c
?
@Formula
我的服务器是 Microsoft 结构化查询语言服务器 2019。
答: 暂无答案
下一个:视图是否比简单查询更快?
评论
case when COUNT(*) OVER(PARTITION BY c) > 1 THEN 1 ELSE 0 END