【发布时间】:2021-09-09 21:48:23
【问题描述】:
我目前有这样的查询:
SELECT DISTINCT t.column1, SUM(t2.column2 IS NOT NULL)
FROM table t
LEFT OUTER JOIN table t2 on table.id = t2.id
GROUP BY column1, column2;
我正在尝试使用 Spring JPA CriteriaBuilder 实现查询。我看到 CriteriaBuilder.sum() 方法,但我没有看到将 IS NOT NULL 部分应用于选择的方法。 Column2的数据类型是字符串。
我的代码示例
criteriaBuilder.multiselect(root.get("column1"), cb.sum(root.get("column2")));
【问题讨论】:
-
为什么不在 WHERE 子句中加入“t2.column2 IS NOT NULL”?
-
如何对字符串类型求和?
-
GROUP BY column1, column2看起来也不对。 -
它对非空记录的数量求和 @Bohemian 查询在 MYSQL 中按预期工作。
-
@mvmn 如果我在 WHERE 子句中添加“t2.column2 IS NOT NULL”,左外连接将无法按预期工作。在右表中添加 WHERE 子句会导致左外连接被取消。
标签: java mysql spring-data-jpa