可用版本: Dev (3.21) | 最新 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11

COUNT

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

COUNT() 聚合函数有两种形式

  • COUNT(*): 此版本计算组中元组的数量,不考虑任何内容,包括 NULL 值。
  • COUNT(expression): 此版本计算每个组中非 NULL 表达式的计算结果的数量。

第二个版本可以用来模拟 FILTER 子句,因为参数表达式有效地过滤掉 NULL 值。或者,在 LEFT JOIN 的情况下,可以使用主键上的表达式来计算外部连接的行,因为 COUNT(*) 始终至少生成一行。

SELECT
  AUTHOR.ID,
  count(*),
  count(BOOK.ID)
FROM AUTHOR
LEFT JOIN BOOK
ON BOOK.AUTHOR_ID = AUTHOR.ID
create.select(
         AUTHOR.ID,
         count(),
         count(BOOK.ID))
      .from(AUTHOR)
      .leftJoin(BOOK)
      .on(BOOK.AUTHOR_ID.eq(AUTHOR.ID))

产生(假设存在 ID = 3 的作者,但没有书籍)

+----+----------+----------------+
| ID | count(*) | count(BOOK.ID) |
+----+----------+----------------+
|  1 |        2 |              2 |
|  2 |        2 |              2 |
|  3 |        1 |              0 |
+----+----------+----------------+

方言支持

此示例使用 jOOQ

count(BOOK.ID)

翻译成以下特定方言的表达式

所有方言

count(BOOK.ID)
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL

反馈

您对此页面有任何反馈吗? 我们很乐意听到您的反馈!

The jOOQ Logo