count distinct
SQL 语句
SELECT
count( DISTINCT `b2c_return_order`.`order_sn` )
FROM
`b2c_return_order`
WHERE
( `b2c_return_order`.`user_id` = 198 AND `b2c_return_order`.`refund_status` = 5 )
对应的JOOQ
int count = db().select(DSL.countDistinct(TABLE.ORDER_SN))
.from(TABLE)
.where(TABLE.USER_ID.eq(userId))
.and(TABLE.REFUND_STATUS.eq(OrderConstant.REFUND_STATUS_FINISH))
.fetchOne(0,int.class);
subquery
error info
Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause`
Stackoverflow: selecting-fields-to-join-on-when-joining-nested-queries
private SelectQuery<?> getIdeasQuery() {
Select<?> numComments = dslContext.select(DSL.count().as("comment_count"), COMMENT.IDEA_ID).from(COMMENT).groupBy(COMMENT.IDEA_ID);
Select<?> numLikes = dslContext.select(DSL.count().as("like_count"), USER_LIKES_IDEA.IDEA_ID).from(USER_LIKES_IDEA).groupBy(USER_LIKES_IDEA.IDEA_ID);
return dslContext
.select(DSL.field("comment_count").as("num_comments"))
.select(DSL.field("like_count").as("num_likes"))
.select(USER.DISPLAY_NAME)
.select(USER.AUTHORITY)
.select(IDEA.fields())
.from(IDEA.leftOuterJoin(numComments.asTable("com")).on(DSL.field("com.idea_id").eq(IDEA.ID))
.leftOuterJoin(numLikes.asTable("like")).on(DSL.field("like.idea_id").eq(IDEA.ID))
.leftOuterJoin(USER).on(IDEA.USER_ID.eq(USER.ID)))
.getQuery();
}
count distinct use order by
stackoverflow: How to use DISTINCT and ORDER BY in same SELECT statement?
一张卡可以被用户领取多次,
需要查询持有卡的用户,如查询card_id
为7的用户数量,并按照领取时间排序max(create_time)
select count (distinct user_id),max(create_time)
from user_card
where card_id = 7
orderBy(max(create_time))