Java 使用QueryDSL JPA在MySQL中查找重复的行
我想在QueryDSL JPA中执行这个SQL请求Java 使用QueryDSL JPA在MySQL中查找重复的行,java,mysql,jpa,querydsl,Java,Mysql,Jpa,Querydsl,我想在QueryDSL JPA中执行这个SQL请求 SELECT authorizationitem.* FROM authorizationitem INNER JOIN ( SELECT `authorize` FROM authorizationitem GROUP BY `authorize` HAVING COUNT(*)>1 ) a2 ON authorizationitem.`authorize` = a2.`author
SELECT authorizationitem.*
FROM authorizationitem
INNER JOIN
(
SELECT `authorize`
FROM authorizationitem
GROUP BY `authorize`
HAVING COUNT(*)>1
) a2
ON authorizationitem.`authorize` = a2.`authorize`;
为了在表中找到重复的行,我应该执行这个请求。但是使用QueryDSL,我找不到写这篇文章的方法
QueryDSL似乎不允许在内部联接中使用子查询:s
有什么建议吗
谢谢
关于,您可以尝试在WHERE子句中使用子查询,但其效率可能低于FROM子句中的子查询。确保authorizationitem.Authorization上有索引以优化联接和分组依据
SELECT authorizationitem.*
FROM authorizationitem
WHERE EXISTS (
SELECT `authorize`
FROM authorizationitem2
WHERE authorizationitem2.authorize = authorizationitem.authorize
GROUP BY `authorize`
HAVING COUNT(*)>1
);
或
您可以尝试在WHERE子句中使用子查询,但其效率可能低于FROM子句中的子查询。确保authorizationitem.Authorization上有索引以优化联接和分组依据
SELECT authorizationitem.*
FROM authorizationitem
WHERE EXISTS (
SELECT `authorize`
FROM authorizationitem2
WHERE authorizationitem2.authorize = authorizationitem.authorize
GROUP BY `authorize`
HAVING COUNT(*)>1
);
或
你不能用HQL/JPQL来表达这一点,所以你需要用SQL来表达这一点。Querydsl JPA提供了通过其API表达JPQL和SQL查询的可能性。您不能用HQL/JPQL来表达这一点,因此您需要用SQL来表达这一点。Querydsl JPA提供了通过其API表达JPQL和SQL查询的可能性。Hi Timo,你能给我举个例子吗?我不知道该怎么办。Thanksher是Hi Timo参考文件的相关部分,你能给我举个例子吗?我不知道该怎么办。Thanksher是参考文档的相关部分