Mysql 은 어떻게 여러 장의 무관 계 조회 데 이 터 를 실현 하고 페이지 를 나 눌 수 있 습 니까?
기능 수요
주 키 와 관련 이 없 는 세 장의 표 에서 원 하 는 데 이 터 를 꺼 내 페이지 를 나눈다.
데이터베이스 테이블 구조
과일 시계:
견과 류 시계:
음료수 리스트:
데이터 베 이 스 를 마음대로 만 든 것 은 방법 에 중점 을 둔다.
UNION 모든 연산 자 를 주로 사용 합 니 다.
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
최종 결과my sql 다 중 표 공동 조회 시 발생 하 는 페이지 문제 해결
질문
부서 표:tbldept
직원 표:tblemp
데이터베이스 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),
(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
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 my sql 에 이모 티 콘 저장my sql 에 emoji 표정 을 저장 하려 면 utf8mb 4 문자 집합 을 사용 해 야 합 니 다. 이것 은 4 바이트 저장 입 니 다. 최소 지원 버 전 은 5.5.3 + 입 니 다. 그렇지 않 으 면 새로운...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.