加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_常德站长网 (https://www.0736zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql多表查询分页查询_解决 mysql多表联合查询时出现的分页问题

发布时间:2022-12-03 08:03:51 所属栏目:MySql教程 来源:互联网
导读: mysql一对多分页问题
部门表:tbl_dept
员工表:tbl_emp
数据库sql文件
CREATE DATABASE /*!32312 IF NOT EXISTS*/`ssm-crud` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `ssm-crud`;
/

mysql一对多分页问题

部门表:tbl_dept

员工表:tbl_emp

数据库sql文件

CREATE DATABASE /*!32312 IF NOT EXISTS*/`ssm-crud` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `ssm-crud`;

/*Table structure for table `tbl_dept` */

DROP TABLE IF EXISTS `tbl_dept`;

CREATE TABLE `tbl_dept` (

`dept_id` int(11) NOT NULL AUTO_INCREMENT,

`dept_name` varchar(255) DEFAULT NULL,

PRIMARY KEY (`dept_id`)

) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

/*Data for the table `tbl_dept` */

insert into `tbl_dept`(`dept_id`,`dept_name`) values

(1,'技术部'),

(2,'业务部'),

(6,'销售部'),

(7,'人事部');

/*Table structure for table `tbl_emp` */

DROP TABLE IF EXISTS `tbl_emp`;

CREATE TABLE `tbl_emp` (

`emp_id` int(11) NOT NULL AUTO_INCREMENT,

`emp_name` varchar(255) DEFAULT NULL,

`emp_gender` char(1) DEFAULT NULL,

`emp_email` varchar(255) DEFAULT NULL,

`d_id` int(11) DEFAULT NULL,

PRIMARY KEY (`emp_id`),

KEY `FK_tbl_emp` (`d_id`),

CONSTRAINT `FK_tbl_emp` FOREIGN KEY (`d_id`) REFERENCES `tbl_dept` (`dept_id`)

) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;

/*Data for the table `tbl_emp` */

insert into `tbl_emp`(`emp_id`,`emp_name`,`emp_gender`,`emp_email`,`d_id`) values

(1,'xiaoshen','2',NULL,6),

(4,'晓明','1',NULL,1),

(5,'xiaohong','2',NULL,2),

(6,'xiaohei','2',NULL,6),

(7,'xiaozhang','1',NULL,1),

(8,'xiaogao','1',NULL,1),

(9,'xiaohua','1',NULL,1)MySQL分页查询,

(10,'xiaoyan','2',NULL,1),

(11,'xiaohai','2',NULL,2),

(12,'xiaoqiang','1',NULL,6),

(13,'xiaoqi','2',NULL,7);

分页错误写法(主查询员工表)

SELECT * FROM tbl_emp e

LEFT JOIN

tbl_dept d

ON d.dept_id = e.d_id

LIMIT 1,10

使用子查询方式解决问题

SELECT

*

FROM

(

SELECT

*

FROM

tbl_emp e

LEFT JOIN

tbl_dept d

ON d.dept_id = e.d_id

GROUP BY e.d_id

LIMIT 1,10

) e

LEFT JOIN tbl_dept d

ON d.dept_id = e.d_id

下面代码与之无关 仅为备份

SELECT

ft.id,

ft.partner_id AS partnerId,

ft.code ,

ft.end_update_date AS endUpdateDate,

ft.name ,

ft.type ,

ft.area ,

ft.is_default AS isDefault,

fp.id fpId,

fp.shop_id AS fpShopId ,

fp.provice_id AS fpProviceId ,

fp.provice_name AS fpProviceName ,

fp.start_num AS fpStartNum ,

fp.start_fee AS fpStartFee ,

fp.increase_num AS fpIncreaseNum ,

fp.increase_fee AS fpIncreaseFee ,

fp.code AS fpCode ,

fp.provice_text AS fpProviceText ,

fp.template_id AS fpTemplateId

FROM

(

SELECT

f.id,

f.partner_id ,

f.code ,

f.end_update_date ,

f.name ,

f.type ,

f.area ,

f.is_default ,

f.is_del,

f.create_date

FROM

bus_freight_template f

LEFT JOIN bus_freight_provice p

ON f.id = p.template_id

WHERE f.code = p.code

AND f.code = #{code}

GROUP BY f.id

LIMIT #{startPage},#{pageSize}

) ft

LEFT JOIN bus_freight_provice fp

ON ft.id = fp.template_id

WHERE ft.code = fp.code

AND fp.template_id IS NOT NULL

AND ft.code = #{code}

AND fp.is_del = '0'

AND ft.is_del = '0'

order by ft.create_date desc

(编辑:应用网_常德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!