当前位置: 首页 > 面试题库 >

如何从数据库中获取所有结果列以及Jooq中的其他自定义(concat,sum,count)列

云英才
2023-03-14
问题内容

我有一个包含6列的表Table1。

这是我需要映射的sql语句。

Select *,count(ID) as IdCount from Table1;

现在,SQL查询结果将是7列(6个Table1列和1个IdCount列)。但是,当我在此查询的Jooq中实现相同功能时,它仅获得一个列“ IDCount”。

SelectQuery q = factory.selectQuery();
        q.addSelect(Table1.ID.count().as("IdCount"));
        q.addFrom(Table1.TABLE1);

现在,结果记录集只有一个列“ IdCount”,而我需要的是所有列和一个附加列“ IdCount”。我也想要Jooq中的7列。


问题答案:

选项1 (使用星号):

*(星号,星)运营商已经通过加入jOOQ 3.11
DSL.asterisk()(不合格星号),或通过Table.asterisk()(合格的星号)。可以像投影任何其他列一样使用它。

在jOOQ 3.11之前,还有以下其他选项:

选项2 (使用DSL语法):

List<Field<?>> fields = new ArrayList<Field<?>>();
fields.addAll(Arrays.asList(Table1.TABLE1.fields()));
fields.add(Table1.ID.count().as("IdCount"));

Select<?> select = ctx.select(fields).from(Table1.TABLE1);

选项3 (使用“常规”语法):

SelectQuery q = factory.selectQuery();
q.addSelect(Table1.TABLE1.fields());
q.addSelect(Table1.ID.count().as("IdCount"));
q.addFrom(Table1.TABLE1);

选项4 (在jOOQ的更高版本中添加):

// For convenience, you can now specify several "SELECT" clauses
ctx.select(Table1.TABLE1.fields())
   .select(Table1.ID.count().as("IdCount")
   .from(Table1.TABLE1);

以上所有选项均使用该Table.fields()方法,该方法当然依赖于在运行时出现的此类元信息,例如通过使用代码生成器。



 类似资料:
  • 我一直在努力获取firestore收藏中所有文档的列表。我想显示集合中所有文档的所有详细信息。我的文档树如下- '组'集合----- 现在,我想获取特定groupID的“任务”集合中的所有文档及其详细信息。 我尝试了这个方法,但它不起作用,因为“没有为“CollectionReference”类型定义“get”方法。”请问怎么绕过这个?

  • 问题内容: 使用JOOQ解析器API,我可以解析以下查询,并从生成的Query对象获取参数映射。由此,我可以知道有一个参数,它的名称是“ something”。 但是,我还无法弄清楚如何确定参数“ something”是否已分配给名为“ BAZ”的列,并且该列是表“ BAR”的一部分。 解析器API是否可以获取与每个参数关联的表/列元数据? 问题答案: 从jOOQ 3.11开始,可用于访问内部表达

  • 使用JOOQ parser API,我能够解析以下查询,并从生成的查询对象获得参数映射。从这里,我可以看出有一个参数,它的名字是“something”。 解析器API是否有获取与每个参数关联的表/列元数据的方法?

  • 问题内容: 我正在使用CsvJdbc(它是用于csv文件的JDBC驱动程序)来访问csv文件。我不知道csv文件包含多少列。如何获得列数?是否有任何JDBC函数?我在java.sql.ResultSet中找不到任何方法。 为了访问该文件,我使用类似于CsvJdbc网站上示例的代码。 问题答案: 您可以从ResultSetMetaData获取列号:

  • 问题内容: 我将解释我在示例中需要做的事情。首先,我们有一个像这样的简单表,名为 table : 现在查询: 将使我们得到与这一结果相似的结果: 但是是否有可能收集 name的 所有值来得到这样的结果? 问题答案: 使用MySQL可以使用GROUP_CONCAT(expr) 此函数返回一个字符串结果,其中包含来自组的串联的非NULL值。如果没有非NULL值,则返回NULL。完整语法如下: 就像是

  • Iam使用这个API->https://www.boredapi.com/API/activity,所以Iam用Java创建一个程序,但是当我从上面的API检索数据时,像这样-> 我在控制台->中获得此输出