Count(*)数据的查询总结

本文总结了查询Count(*)的两种情况。一是针对单表数据的查询,通过where条件筛选,将is_anchor=1的数据在页面展示。在controller中将字段值放入map,mapper文件中的SQL对应处理。二是查询多张表数据,关键在于where后的条件设置,通过重新编写count(*)实现。在dao层提供了相应的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、第一种情况是条件只需要查询一张表中的数据,

主要的SQL语句:

<!-- 分页查询主播列表-->
	<select id="findAnchor" resultMap="AppUserResultMap">
		SELECT
			ta.id,
			ta.nickname,
			tl.title,
			tlv.type as anchorType,
			tlv.cash_deposit as cashDeposit,
			ta.phone
		FROM
			t_app_user ta
		LEFT JOIN t_liveroom tl ON ta.id = tl.anchor_id
		LEFT JOIN t_liveinfo tlv ON ta.id = tlv.user_id and tlv.status=1
		WHERE
			ta.is_anchor = 1
		<if test="id != null and id != '' ">
			AND ta.id = #{id,jdbcType=BIGINT}
		</if>
		<if test="phone != null and phone != ''">
			AND ta.phone = #{phone,jdbcType=VARCHAR}
		</if>
		<if test="nickname != null and status != '' ">
			AND ta.nickname = #{nickname,jdbcType=VARCHAR}
		</if>
		<if test="order != null and order != ''">
			order by  ${order}
	    </if>
	    
		<if test="pageNumber != null  and pageSize !=null ">
			limit  #{pageNumber,jdbcType=INTEGER},#{pageSize,jdbcType=INTEGER}
	     </if>
	</select>
	

这个查询主要是查询一张表中的数据,看where 的条件就能看出来。

需要在页面中显示这张表中的数据,只需要把is_anchor=1这个字段值存储到pageable中即可,那就只需要在controller中把

字段的值存在map中即可,但是需要注意的是key值对应的是mapper文件中的映射值。

key是与mapper文件中字段映射的

mapper文件中的查询总条数的SQL语句:

<!-- 统计记录数 -->
	<select id="count" resultType="long">
		SELECT COUNT(id) FROM T_APP_USER a
		<where> 
			<include refid="where_column" />
		</where>
	</select>
	

 2、页面查询出多张表中的数据

  主要思路是重新书写一个count(*),重点是where后的条件。

<!-- 统计记录数 -->
	<select id="countLiveinfo" resultType="long">
		SELECT
		  count(*)
		FROM
			t_liveinfo tl
		LEFT JOIN t_app_user ta ON tl.user_id = ta.id
		<where> 1=1
			<if test="id != null ">
				AND tl.user_id = #{id,jdbcType=VARCHAR}
			</if>
			<if test="phone != null ">
				AND ta.phone = #{phone,jdbcType=VARCHAR}
		    </if>
			<if test="nickname != null ">
				AND ta.nickName = #{nickname,jdbcType=VARCHAR}
			</if>
			<if test="type != null ">
				AND tl.type = #{type,jdbcType=VARCHAR}
			</if>
			<if test="statuss != null ">
				AND (tl.status = #{statuss,jdbcType=INTEGER} or tl.status = 2)
			</if>
		</where>
	</select>
	

接下来就是实现层的实现:

dao层的代码:

这样查询页面中多张表的数据就实现了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值