mysql分页查询,两张表关联,已第一张表的数量分页,忽略笛卡尔积

现状:

        日志有两张表,第一张是操作总览,第二张是详细记录,第一张表和第二张的关系是一对多的关系。

        需要一次将这两个都查出来,分页按照第一张表进行分页,不包含第二张表的笛卡尔积;但是需要第二张表的一行作为条件

解决方案:

暂时有两种或三种解决方案

一、将第二张表的行挪到第一张表中

将第二张表的行浓缩到第一张表中,因为是一对多的关系,所以不能使用普通的字段来表示,可以使用二进制的保存方法,类似于linux中文件权限的设置一样。

一位对应一个类型,比如说我现在有三个状态a、b、c,

        如果一个操作只有a一个状态,二进制就是001,转换成十进制就是1

        如果一个操作有a、b两个状态,二进制就是011,转换成十进制就是3,以此类推

然后查询分页的时候就可以先按照第一张表进行查询分页,然后再关联查询第二张表,带入条件选出需要的数据

二、使用行号对第一张表进行标号

创建一个行好,对第一张表的ID进行绑定,然后关联查询

select column_name,column_name2,column_name3 from  (
          SELECT
              column_name,
              column_name2,
              column_name3,
              CASE
                  WHEN table_name.column_name != @next THEN @table := @table + 1
                  ELSE @table
                  END AS count,
              @next := table_name.column_name
          FROM
              table_name inner join table_name2 on column_name = column_name3 ,
              (SELECT @table := 0, @next) AS t
      ) as t2
where t2.count >= 0 and t2.count <=2

三、分步操作(比较繁琐)

先关联查询,查询出符合条件的总览id,然后再对第一张表进行分页,再进行自查询查询出需要的第二张表数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值