Mysql 如何实现多张无关联表查询数据并分页

这篇文章主要介绍了Mysql 实现多张无关联表查询数据并分页的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mysql 多张无关联表查询数据并分页

功能需求

在三张没有主外键关联的表中取出自己想要的数据,并且分页。

数据库表结构

水果表:

Mysql 如何实现多张无关联表查询数据并分页

坚果表:

Mysql 如何实现多张无关联表查询数据并分页

饮料表:

Mysql 如何实现多张无关联表查询数据并分页

数据库随便建的,重在方法。

主要使用union all 操作符

union all 操作符用于合并两个或多个 select 语句的结果集。

请注意,union all内部的 select 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 select 语句中的列的顺序必须相同 ; 另外,union all结果集中的列名总是等于 union all中第一个 select 语句中的列名。

?

1

2

3

4

5

6

7

8

9

10

// 详细sql语句

select * from

(

(select fid,fname,price,type from fruits)

union all

(select nid,name,price,6 as type from nut)

union all

(select did,dname,price,7 as type from drinks)

) as fnd limit 0,10 —–fnd为表的别名

最终结果

Mysql 如何实现多张无关联表查询数据并分页

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

mysql一对多分页问题

部门表:tbl_dept

员工表:tbl_emp

数据库sql文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

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),

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

(11,'xiaohai','2',null,2),

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

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

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

?

1

2

3

4

5

6

7

select * from tbl_emp e

left join

tbl_dept d

on d.dept_id = e.d_id

limit 1,10

使用子查询方式解决问题

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持钦钦技术栈。

原文链接:https://blog.csdn.net/qq_38159467/article/details/85015559

版权声明:本文(即:原文链接:https://www.qin1qin.com/catagory/7072/)内容由互联网用户自发投稿贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 630367839@qq.com 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年 7月 31日 3:32:27
下一篇 2022年 7月 31日 3:32:43

软件定制开发公司

相关阅读

发表回复

登录后才能评论
通知:禁止投稿所有关于虚拟货币,币圈类相关文章,发现立即永久封锁账户ID!