在三張沒有主外來鍵關聯的表中取出自己想要的資料,並且分頁。
水果表:
堅果表:
飲料表:
資料庫隨便建的,重在方法。
union all 操作符用於合併兩個或多個 select 語句的結果集。
請注意,union all內部的 select 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每條 select 語句中的列的順序必須相同 ; 另外,union all結果集中的列名總是等於 union all中第乙個 select 語句中的列名。
// 詳細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為表的別名
部門表: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','',null,1),
(9,'xiaohua','1',null,1),
(10,'xiaoyan','2',null,1),
(11,'xiaohai','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
mxaeohp
group by e.d_id
limit 1,10
) eleft join tbl_dept d
mxaeohp 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 #,#
) 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
本文標題: mysql 如何實現多張無關聯表查詢資料並分頁
本文位址: /shujuku/mysql/399070.html
MySQL多張表關聯查詢
工作中遇到的問題,其實也不算難,最多算是複雜了一丟丟。有四張表,a,b,c,d 假設 a 商戶表,有欄位code b 商戶普通使用者表,也有字段code ps code是關聯著三張表的重要字段 c 商戶會員表,沒有與其關聯的code,但是有card code欄位與d表中的card code關聯 d ...
mysql如何關聯 MySQL 如何執行關聯查詢
當前mysql執行的策略很簡單 mysql對任何關聯都執行巢狀迴圈操作,即mysql先在乙個表中迴圈取出單條資料,然後再巢狀迴圈到下乙個表中尋打匹配的行,依次下去,直到描述到所表表中匹配的行為止。然後根據各個表匹配的行,返回查詢中需要的各個列。mysql會嘗試在最後乙個關聯表中打到所有匹配的行,如果...
mysql如何關聯 MySQL如何執行關聯查詢
mysql中 關聯 join 一詞包含的意義比一般意義上理解的要更廣泛。總的來說,mysql認為任何乙個查詢都是一次 關聯 並不僅僅是乙個查詢需要到兩個表的匹配才叫關聯,索引在mysql中,每乙個查詢,每乙個片段 包括子查詢,設定基於表單的select 都可能是關聯。所以,理解mysql如何執行關聯...