相关疑难解决方法(0)

禁用ONLY_FULL_GROUP_BY

我不小心启用了ONLY_FULL_GROUP_BY这样的模式:

SET sql_mode = 'ONLY_FULL_GROUP_BY';
Run Code Online (Sandbox Code Playgroud)

我该如何禁用它?

mysql mysql-workbench

538
推荐指数
25
解决办法
72万
查看次数

带有JPA Criteria API的select子句中的子查询

我正在尝试在标题中插入一个子查询,就像在这个简单的SQL中一样:

SELECT id, name, (select count(*) from item) from item
Run Code Online (Sandbox Code Playgroud)

这显然只是一个模拟查询只是为了说明我的观点.(关键是获取查询返回的每个项目的最后一张发票.)

我试过这个:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Tuple> c = cb.createTupleQuery();
Root<Item> item= c.from(Item.class);

Subquery<Long> scount = c.subquery(Long.class);
Root<Item> sarticolo = scount.from(Item.class);
scount.select(cb.count(sitem));

c.multiselect(item.get("id"),item.get("nome"), scount);

Query q = em.createQuery(c);
q.setMaxResults(100);
List<Tuple> result = q.getResultList();

for(Tuple t: result){
  System.out.println(t.get(0) + ", " + t.get(1) + ", " + t.get(2));
}
Run Code Online (Sandbox Code Playgroud)

但我只得到:

java.lang.IllegalStateException:子查询不能出现在select子句中

我怎样才能得到类似的结果?

select jpa criteria subquery

15
推荐指数
2
解决办法
3万
查看次数

H2 DB - 列必须在"分组依据"列表中

我正在使用H2-DB访问静态数据库......

我有一张桌子,看起来像:

COUNTRY     STATE       CITY         LAT     LNG     COUNTRYID      STATEID     CITYID 
"Germany"   "Berlin"    ""           1.23    1.23    1              1           0
"Germany"   "München"   ""           1.23    1.23    1              2           0
"USA"       "Alabama"   "Auburn"     1.23    1.23    2              1           1
"USA"       "Alabama"   "Birmingham" 1.23    1.23    2              1           2
"USA"       "Alaska"    "Anchorage"  1.23    1.23    2              2           1
"USA"       "Alaska"    "Cordova"    1.23    1.23    2              2           2
Run Code Online (Sandbox Code Playgroud)

它是一个包含许多国家的巨大名单,其中大多数只有国家和州(如德国,而国家是城市),少数也有城市(如美国这里)......

问题是现在,当我查询

SELECT * FROM MyTable WHERE COUNTRY = 'Germany' group by STATE order by STATE
Run Code Online (Sandbox Code Playgroud)

为了获得状态(或城市)的排序列表,我得到一个错误说

Field CITY must be in …
Run Code Online (Sandbox Code Playgroud)

java sql database h2

4
推荐指数
1
解决办法
8198
查看次数

JPA Criteria Builder的求和列顺序

我有以下SQL查询。

select colA, sum(colB) as colB from tableA group by colA order by colB desc;
Run Code Online (Sandbox Code Playgroud)

我已经使用jpa条件构建器来动态构建查询。

List<String> selectCols = new ArrayList<>();
selectCols.add("colA");
List<String> sumColumns = new ArrayList<>();
sumColumns.add("colB");
List<String> groupByColumns = new ArrayList<>();
groupByColumns.add("colA");
List<String> orderingColumns = new ArrayList<>();
orderingColumns.add("colB");

CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<Tuple> cQuery = builder.createQuery(Tuple.class);
Root<T> root = cQuery.from(getDomainClass());

List<Selection<?>> selections = new ArrayList<>();
for (String column : selectCols) {
    selections.add(root.get(column).alias(column));
}

if (sumColumns != null) {
    for (String sumColumn : sumColumns) {
        selections.add(builder.sum(root.get(sumColumn)).alias(sumColumn));
    }
}

cQuery.multiselect(selections); …
Run Code Online (Sandbox Code Playgroud)

java mysql jpa spring-data-jpa

2
推荐指数
1
解决办法
2565
查看次数

标签 统计

java ×2

jpa ×2

mysql ×2

criteria ×1

database ×1

h2 ×1

mysql-workbench ×1

select ×1

spring-data-jpa ×1

sql ×1

subquery ×1