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
反馈
您对此页面有任何反馈吗? 我们很乐意听到您的反馈!