Mysql 如何實(shí)現(xiàn)多張無(wú)關(guān)聯(lián)表查詢數(shù)據(jù)并分頁(yè)
Mysql 多張無(wú)關(guān)聯(lián)表查詢數(shù)據(jù)并分頁(yè)
功能需求
在三張沒(méi)有主外鍵關(guān)聯(lián)的表中取出自己想要的數(shù)據(jù),并且分頁(yè)。
數(shù)據(jù)庫(kù)表結(jié)構(gòu)
水果表:

堅(jiān)果表:

飲料表:

數(shù)據(jù)庫(kù)隨便建的,重在方法。
主要使用UNION ALL 操作符
UNION ALL 操作符用于合并兩個(gè)或多個(gè) SELECT 語(yǔ)句的結(jié)果集。
請(qǐng)注意,UNION ALL內(nèi)部的 SELECT 語(yǔ)句必須擁有相同數(shù)量的列。列也必須擁有相似的數(shù)據(jù)類型。同時(shí),每條 SELECT 語(yǔ)句中的列的順序必須相同 ; 另外,UNION ALL結(jié)果集中的列名總是等于 UNION ALL中第一個(gè) SELECT 語(yǔ)句中的列名。
// 詳細(xì)sql語(yǔ)句 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為表的別名
最終結(jié)果

mysql多表聯(lián)合查詢時(shí)出現(xiàn)的分頁(yè)問(wèn)題的解決
mysql一對(duì)多分頁(yè)問(wèn)題
部門(mén)表:tbl_dept
員工表:tbl_emp
數(shù)據(jù)庫(kù)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,'技術(shù)部'), (2,'業(yè)務(wù)部'), (6,'銷(xiāo)售部'), (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);
分頁(yè)錯(cuò)誤寫(xiě)法(主查詢員工表)
SELECT * FROM tbl_emp e LEFT JOIN tbl_dept d ON d.dept_id = e.d_id LIMIT 1,10
使用子查詢方式解決問(wèn)題
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
下面代碼與之無(wú)關(guān) 僅為備份
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
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SpringBoot+ MySQL多線程查詢與聯(lián)表查詢性能對(duì)比
- MySQL的聯(lián)表查詢實(shí)現(xiàn)
- .NET?6?跨服務(wù)器聯(lián)表查詢操作MySql、Oracle、SqlServer等相互聯(lián)表
- Mysql深入了解聯(lián)表查詢的特點(diǎn)
- MySQL派生表聯(lián)表查詢實(shí)戰(zhàn)過(guò)程
- MySQL聯(lián)表查詢基本操作之left-join常見(jiàn)的坑
- MySQL聯(lián)表查詢的簡(jiǎn)單示例
- mysql嵌套查詢和聯(lián)表查詢優(yōu)化方法
- Mysql聯(lián)表查詢索引失效的幾種問(wèn)題解決
相關(guān)文章
MySQL Hints控制查詢優(yōu)化器的選擇問(wèn)題小結(jié)
MySQL Hints是一種強(qiáng)大的工具,可以幫助我們解決復(fù)雜的查詢性能問(wèn)題,然而,它們應(yīng)該謹(jǐn)慎使用,并且總是與徹底的測(cè)試和驗(yàn)證相結(jié)合,本文介紹MySQL Hints控制查詢優(yōu)化器的選擇,感興趣的朋友一起看看吧2024-06-06
DB為何大量出現(xiàn)select @@session.tx_read_only 詳解
這篇文章主要給大家介紹了關(guān)于DB為何大量出現(xiàn)select @@session.tx_read_only 的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04
修改Mysql索引長(zhǎng)度限制解決767?byte限制問(wèn)題
這篇文章主要介紹了修改Mysql索引長(zhǎng)度限制解決767?byte限制問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
MySQL用戶和權(quán)限及破解root口令的方法示例
這篇文章主要介紹了詳解MySQL用戶和權(quán)限及破解root口令,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05
MySQL正則表達(dá)式regexp_replace函數(shù)的用法實(shí)例
regexp_replace的使用非常靈活,且容易忘記,故做此筆記,下面這篇文章主要給大家介紹了關(guān)于MySQL正則表達(dá)式regexp_replace函數(shù)的用法實(shí)例,需要的朋友可以參考下2022-09-09
linux mysql5.5升級(jí)至mysql5.7的步驟與踩到的坑
這篇文章主要介紹了linux mysql5.5升級(jí)至mysql5.7的詳細(xì)步驟,后面腳本之家小編為大家整理了多個(gè)補(bǔ)充,大家可以參考一下2021-01-01
MYSQL5.7 全文檢索中文無(wú)返回?cái)?shù)據(jù)的問(wèn)題解決
本文介紹了MYSQL5.7 全文檢索中文無(wú)返回?cái)?shù)據(jù)的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
centos mysql 修改數(shù)據(jù)庫(kù)目錄
centos mysql修改數(shù)據(jù)庫(kù)目錄的方法。2013-11-11

