📚 博主的专栏
🐧 Linux | 🖥️ C++ | 📊 数据结构 | 💡C++ 算法 | 🅒 C 语言 | 🌐 计算机网络 |🗃️ mysql
本篇文章所用到的练习数据库:scott
摘要:本文主要介绍了MySQL中的多表查询和子查询操作,涵盖了单表查询、多表联合查询、自连接、子查询(单行、多行、多列)、合并查询(UNION、UNION ALL)等内容。通过实际案例,展示了如何在不同场景下使用这些查询技术,如查询工资高于平均工资的员工、显示部门信息及人员数量、查找每个部门工资最高的员工等。文章还强调了解决多表查询问题的本质是将多表转化为单表,并提供了多种查询方法的对比和优化建议。最后,通过实战OJ题目,进一步巩固了多表查询的应用。
目录
前面我们探讨的 MySQL 表查询仅限于单表操作,但在实际开发场景中,这显然无法满足需求。
基本查询回顾
查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的Jmysql> select * from emp where (sal>500 or job='MANAGER') and ename like 'J%'; +--------+-------+---------+------+---------------------+---------+------+--------+ | empno | ename | job | mgr | hiredate | sal | comm | deptno | +--------+-------+---------+------+---------------------+---------+------+--------+ | 007566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975.00 | NULL | 20 | | 007900 | JAMES | CLERK | 7698 | 1981-12-03 00:00:00 | 950.00 | NULL | 30 | +--------+-------+---------+------+---------------------+---------+------+--------+ 2 rows in set (0.00 sec) mysql> select * from emp where (sal>500 or job='MANAGER') and substring(ename, 1, 1) ='J'; +--------+-------+---------+------+---------------------+---------+------+--------+ | empno | ename | job | mgr | hiredate | sal | comm | deptno | +--------+-------+---------+------+---------------------+---------+------+--------+ | 007566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975.00 | NULL | 20 | | 007900 | JAMES | CLERK | 7698 | 1981-12-03 00:00:00 | 950.00 | NULL | 30 | +--------+-------+---------+------+---------------------+---------+------+--------+ 2 rows in set (0.00 sec) mysql> select * from emp where (sal>500 or job='MANAGER') and substring(ename, 1, 2) ='JA'; +--------+-------+-------+------+---------------------+--------+------+--------+ | empno | ename | job | mgr | hiredate | sal | comm | deptno | +--------+-------+-------+------+---------------------+--------+------+--------+ | 007900 | JAMES | CLERK | 7698 | 1981-12-03 00:00:00 | 950.00 | NULL | 30 | +--------+-------+-------+------+---------------------+--------+------+--------+ 1 row in set (0.00 sec) mysql>
按照部门号升序而雇员的工资降序排序
mysql> select ename, sal, deptno from emp order by deptno asc, sal desc; +--------+---------+--------+ | ename | sal | deptno | +--------+---------+--------+ | KING | 5000.00 | 10 | | CLARK | 2450.00 | 10 | | MILLER | 1300.00 | 10 | | SCOTT | 3000.00 | 20 | | FORD | 3000.00 | 20 | | JONES | 2975.00 | 20 | | ADAMS | 1100.00 | 20 | | SMITH | 800.00 | 20 | | BLAKE | 2850.00 | 30 | | ALLEN | 1600.00 | 30 | | TURNER | 1500.00 | 30 | | WARD | 1250.00 | 30 | | MARTIN | 1250.00 | 30 | | JAMES | 950.00 | 30 | +--------+---------+--------+ 14 rows in set (0.00 sec)
使用年薪进行降序排序
这里要注意:任何数和null运算的结果都是null:mysql> select ename, sal*12+comm 年薪 from emp order by 年薪 desc; +--------+----------+ | ename | 年薪 | +--------+----------+ | ALLEN | 19500.00 | | TURNER | 18000.00 | | MARTIN | 16400.00 | | WARD | 15500.00 | | SMITH | NULL | | JONES | NULL | | BLAKE | NULL | | CLARK | NULL | | SCOTT | NULL | | KING | NULL | | ADAMS | NULL | | JAMES | NULL | | FORD | NULL | | MILLER | NULL | +--------+----------+ 14 rows in set (0.00 sec)
解决办法:使用ifnull(comm, 0),如果不是null就返回comm值,如果是就返回0
mysql> select ename, sal*12+ifnull(comm, 0) 年薪 from emp order by 年薪 desc; +--------+----------+ | ename | 年薪 | +--------+----------+ | KING | 60000.00 | | SCOTT | 36000.00 | | FORD | 36000.00 | | JONES | 35700.00 | | BLAKE | 34200.00 | | CLARK | 29400.00 | | ALLEN | 19500.00 | | TURNER | 18000.00 | | MARTIN | 16400.00 | | MILLER | 15600.00 | | WARD | 15500.00 | | ADAMS | 13200.00 | | JAMES | 11400.00 | | SMITH | 9600.00 | +--------+----------+ 14 rows in set (0.00 sec)
显示工资最高的员工的名字和工作岗位
嵌套了select语句
mysql> select ename, job, sal from emp where sal=(select max(sal) from emp); +-------+-----------+---------+ | ename | job | sal | +-------+-----------+---------+ | KING | PRESIDENT | 5000.00 | +-------+-----------+---------+ 1 row in set (0.00 sec)
显示工资高于平均工资的员工信息
mysql> select * from emp where sal > (select avg(sal) from emp); +--------+-------+-----------+------+---------------------+---------+------+--------+ | empno | ename | job | mgr | hiredate | sal | comm | deptno | +--------+-------+-----------+------+---------------------+---------+------+--------+ | 007566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975.00 | NULL | 20 | | 007698 | BLAKE | MANAGER | 7839 | 1981-05-01 00:00:00 | 2850.00 | NULL | 30 | | 007782 | CLARK | MANAGER | 7839 | 1981-06-09 00:00:00 | 2450.00 | NULL | 10 | | 007788 | SCOTT | ANALYST | 7566 | 1987-04-19 00:00:00 | 3000.00 | NULL | 20 | | 007839 | KING | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000.00 | NULL | 10 | | 007902 | FORD | ANALYST | 7566 | 1981-12-03 00:00:00 | 3000.00 | NULL | 20 | +--------+-------+-----------+------+---------------------+---------+------+--------+ 6 rows in set (0.01 sec)
显示每个部门的平均工资和最高工资
mysql> select deptno, max(sal) 最高工资, avg(sal) 平均 from emp group by deptno order by deptno; +--------+--------------+-------------+ | deptno | 最高工资 | 平均 | +--------+--------------+-------------+ | 10 | 5000.00 | 2916.666667 | | 20 | 3000.00 | 2175.000000 | | 30 | 2850.00 | 1566.666667 | +--------+--------------+-------------+ 3 rows in set (0.00 sec)
显示平均工资低于2000的部门号和它的平均工资
mysql> select deptno, avg(sal) 平均工资 from emp group by deptno having 平均工资 < 2000; +--------+--------------+ | deptno | 平均工资 | +--------+--------------+ | 30 | 1566.666667 | +--------+--------------+ 1 row in set (0.00 sec)
显示每种岗位的雇员总数,平均工资
mysql> select job, format(avg(sal), 2) 平均工资, count(job) 雇员总数 from emp group by job order by 雇员. 数; +-----------+--------------+--------------+ | job | 平均工资 | 雇员总数 | +-----------+--------------+--------------+ | PRESIDENT | 5,000.00 | 1 | | ANALYST | 3,000.00 | 2 | | MANAGER | 2,758.33 | 3 | | CLERK | 1,037.50 | 4 | | SALESMAN | 1,400.00 | 4 | +-----------+--------------+--------------+ 5 rows in set (0.00 sec)
多表查询
实际开发中往往数据来自不同的表,所以需要多表查询。本节我们用一个简单的公司管理系统,有三张表EMP,DEPT,SALGRADE来演示如何进行多表查询。
案例:
显示雇员名、雇员工资以及所在部门的名字因为上面的数据来自EMP和DEPT表,因此要联合查询
过滤条件:其实我们只要emp表中的deptno = dept表中的deptno字段的记录
mysql> select ename, sal, dname from emp, dept where emp.deptno = dept.deptno order by sal; +--------+---------+------------+ | ename | sal | dname | +--------+---------+------------+ | SMITH | 800.00 | RESEARCH | | JAMES | 950.00 | SALES | | ADAMS | 1100.00 | RESEARCH | | WARD | 1250.00 | SALES | | MARTIN | 1250.00 | SALES | | MILLER | 1300.00 | ACCOUNTING | | TURNER | 1500.00 | SALES | | ALLEN | 1600.00 | SALES | | CLARK | 2450.00 | ACCOUNTING | | BLAKE | 2850.00 | SALES | | JONES | 2975.00 | RESEARCH | | SCOTT | 3000.00 | RESEARCH | | FORD | 3000.00 | RESEARCH | | KING | 5000.00 | ACCOUNTING | +--------+---------+------------+ 14 rows in set (0.00 sec)
显示部门号为10的部门名,员工名和工资
mysql> select * from emp, dept where emp.deptno = dept.deptno and emp.deptno=10 order by empno; +--------+--------+-----------+------+---------------------+---------+------+--------+--------+------------+----------+ | empno | ename | job | mgr | hiredate | sal | comm | deptno | deptno | dname | loc | +--------+--------+-----------+------+---------------------+---------+------+--------+--------+------------+----------+ | 007782 | CLARK | MANAGER | 7839 | 1981-06-09 00:00:00 | 2450.00 | NULL | 10 | 10 | ACCOUNTING | NEW YORK | | 007839 | KING | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000.00 | NULL | 10 | 10 | ACCOUNTING | NEW YORK | | 007934 | MILLER | CLERK | 7782 | 1982-01-23 00:00:00 | 1300.00 | NULL | 10 | 10 | ACCOUNTING | NEW YORK | +--------+--------+-----------+------+---------------------+---------+------+--------+--------+------------+----------+ 3 rows in set (0.00 sec)
显示各个员工的姓名,工资,及工资级别
mysql> select ename, sal, grade, losal, hisal from emp, salgrade where sal between losal and hisal order by sal; +--------+---------+-------+-------+-------+ | ename | sal | grade | losal | hisal | +--------+---------+-------+-------+-------+ | SMITH | 800.00 | 1 | 700 | 1200 | | JAMES | 950.00 | 1 | 700 | 1200 | | ADAMS | 1100.00 | 1 | 700 | 1200 | | WARD | 1250.00 | 2 | 1201 | 1400 | | MARTIN | 1250.00 | 2 | 1201 | 1400 | | MILLER | 1300.00 | 2 | 1201 | 1400 | | TURNER | 1500.00 | 3 | 1401 | 2000 | | ALLEN | 1600.00 | 3 | 1401 | 2000 | | CLARK | 2450.00 | 4 | 2001 | 3000 | | BLAKE | 2850.00 | 4 | 2001 | 3000 | | JONES | 2975.00 | 4 | 2001 | 3000 | | SCOTT | 3000.00 | 4 | 2001 | 3000 | | FORD | 3000.00 | 4 | 2001 | 3000 | | KING | 5000.00 | 5 | 3001 | 9999 | +--------+---------+-------+-------+-------+ 14 rows in set (0.00 sec) mysql>
自连接
自连接是指在同一张表连接查询
案例:
显示员工FORD的上级领导的编号和姓名(mgr是员工领导的编号--empno)
使用的子查询
思路:由于emp表中存放的是整个公司的员工们,因此FORD的领导也在emp表中
1.先找FORD的上级领导的编号
mysql> select mgr from emp where ename='FORD'; +------+ | mgr | +------+ | 7566 | +------+ 1 row in set (0.00 sec)
2.再通过编号查找姓名以及工号:
mysql> select ename, empno from emp where empno = (select mgr from emp where ename='FORD'); +-------+--------+ | ename | empno | +-------+--------+ | JONES | 007566 | +-------+--------+ 1 row in set (0.00 sec)
使用多表查询(自查询)
mysql> select e2.ename, e2.empno from emp e1, emp e2 where e1.ename='FORD' and e1.mgr=e2.empno;
+-------+--------+
| ename | empno |
+-------+--------+
| JONES | 007566 |
+-------+--------+
1 row in set (0.00 sec)
子查询
子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询
单行子查询
返回一行记录的子查询
显示SMITH同一部门的员工mysql> select ename from emp where deptno = (select deptno from emp where ename='SMITH'); +-------+ | ename | +-------+ | SMITH | | JONES | | SCOTT | | ADAMS | | FORD | +-------+ 5 rows in set (0.00 sec)
多行子查询
返回多行记录的子查询
in关键字:某一个列值,是否在某一个集合当中
查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含<>10自己的
mysql> select ename, job, sal, deptno from emp where job in (select distinct(job) from emp where deptno='10') and deptno<>10; +-------+---------+---------+--------+ | ename | job | sal | deptno | +-------+---------+---------+--------+ | SMITH | CLERK | 800.00 | 20 | | JONES | MANAGER | 2975.00 | 20 | | BLAKE | MANAGER | 2850.00 | 30 | | ADAMS | CLERK | 1100.00 | 20 | | JAMES | CLERK | 950.00 | 30 | +-------+---------+---------+--------+ 5 rows in set (0.00 sec)
增加需求:查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含<>10自己的,并且知道对应的员工属于哪一个部门的名字
mysql> select ename, job, sal, dname, emp.deptno from emp, dept where job in (select distinct(job) from emp where emp.deptno='10') and emp.deptno<>10 and emp.deptno=dept.deptno order by emp.deptno; +-------+---------+---------+----------+--------+ | ename | job | sal | dname | deptno | +-------+---------+---------+----------+--------+ | ADAMS | CLERK | 1100.00 | RESEARCH | 20 | | JONES | MANAGER | 2975.00 | RESEARCH | 20 | | SMITH | CLERK | 800.00 | RESEARCH | 20 | | JAMES | CLERK | 950.00 | SALES | 30 | | BLAKE | MANAGER | 2850.00 | SALES | 30 | +-------+---------+---------+----------+--------+ 5 rows in set (0.00 sec)
或者这样:
在from后边添加子句:将子句作为一个新的表tmp
mysql> select ename, job, sal, dname deptno from (select ename, job, sal, deptno from emp where job in (select distinct(job) from emp where deptno='10') and deptno<>10) as tmp, dept where dept.deptnno=tmp.deptno order by sal; +-------+---------+---------+----------+ | ename | job | sal | deptno | +-------+---------+---------+----------+ | SMITH | CLERK | 800.00 | RESEARCH | | JAMES | CLERK | 950.00 | SALES | | ADAMS | CLERK | 1100.00 | RESEARCH | | BLAKE | MANAGER | 2850.00 | SALES | | JONES | MANAGER | 2975.00 | RESEARCH | +-------+---------+---------+----------+ 5 rows in set (0.00 sec)
all关键字
显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号
方法一:比30号部门的最高工资高的
mysql> select ename, sal, deptno from emp where sal > (select max(sal) from emp where deptno='30'); +-------+---------+--------+ | ename | sal | deptno | +-------+---------+--------+ | JONES | 2975.00 | 20 | | SCOTT | 3000.00 | 20 | | KING | 5000.00 | 10 | | FORD | 3000.00 | 20 | +-------+---------+--------+ 4 rows in set (0.00 sec)
方法二:使用all,找出比30部门所有员工工资高的
mysql> select ename, sal, deptno from emp where sal > all(select distinct sal from emp where deptno='30'); +-------+---------+--------+ | ename | sal | deptno | +-------+---------+--------+ | JONES | 2975.00 | 20 | | SCOTT | 3000.00 | 20 | | KING | 5000.00 | 10 | | FORD | 3000.00 | 20 | +-------+---------+--------+ 4 rows in set (0.00 sec)
any关键字:
显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门的员
工)
mysql> select ename, sal, deptno from emp where sal > any(select distinct sal from emp where deptno='30'); +--------+---------+--------+ | ename | sal | deptno | +--------+---------+--------+ | ALLEN | 1600.00 | 30 | | WARD | 1250.00 | 30 | | JONES | 2975.00 | 20 | | MARTIN | 1250.00 | 30 | | BLAKE | 2850.00 | 30 | | CLARK | 2450.00 | 10 | | SCOTT | 3000.00 | 20 | | KING | 5000.00 | 10 | | TURNER | 1500.00 | 30 | | ADAMS | 1100.00 | 20 | | FORD | 3000.00 | 20 | | MILLER | 1300.00 | 10 | +--------+---------+--------+ 12 rows in set (0.00 sec)
多列子查询
单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数据的子查询语句
案例:查询和SMITH的部门和岗位完全相同的所有雇员,不含SMITH本人
可以使用 = 也可以使用 in
mysql> select ename from emp where (deptno, job) = (select deptno, job from emp where ename='SMITH') and ename<>'SMITH'; +-------+ | ename | +-------+ | ADAMS | +-------+ 1 row in set (0.00 sec) mysql> select ename from emp where (deptno, job) in (select deptno, job from emp where ename='SMITH') and ename<>'SMITH'; +-------+ | ename | +-------+ | ADAMS | +-------+ 1 row in set (0.00 sec)
目前全部的子查询,全部都在where子句中,充当判断条件,而我们知道任何时刻查询出来的临时结构,本质在逻辑上也是表结构
在from子句中使用子查询
子查询语句出现在from子句中。这里要用到数据查询的技巧,把一个子查询的结果当做一个临时表使用。
案例
显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资
最后: 添加筛选条件
mysql> select * from emp, (select deptno, avg(sal) 平均工资 from emp group by deptno) as tmp where emp.deptno=tmp.deptno and emp.sal > 平均工资; +--------+-------+-----------+------+---------------------+---------+--------+--------+--------+--------------+ | empno | ename | job | mgr | hiredate | sal | comm | deptno | deptno | 平均工资 | +--------+-------+-----------+------+---------------------+---------+--------+--------+--------+--------------+ | 007499 | ALLEN | SALESMAN | 7698 | 1981-02-20 00:00:00 | 1600.00 | 300.00 | 30 | 30 | 1566.666667 | | 007566 | JONES | MANAGER | 7839 | 1981-04-02 00:00:00 | 2975.00 | NULL | 20 | 20 | 2175.000000 | | 007698 | BLAKE | MANAGER | 7839 | 1981-05-01 00:00:00 | 2850.00 | NULL | 30 | 30 | 1566.666667 | | 007788 | SCOTT | ANALYST | 7566 | 1987-04-19 00:00:00 | 3000.00 | NULL | 20 | 20 | 2175.000000 | | 007839 | KING | PRESIDENT | NULL | 1981-11-17 00:00:00 | 5000.00 | NULL | 10 | 10 | 2916.666667 | | 007902 | FORD | ANALYST | 7566 | 1981-12-03 00:00:00 | 3000.00 | NULL | 20 | 20 | 2175.000000 | +--------+-------+-----------+------+---------------------+---------+--------+--------+--------+--------------+ 6 rows in set (0.00 sec)
添加需求:
除以上要求外,显示办公地点:
mysql> select ename, dept.loc, t1.deptno from (select ename, emp.deptno, sal from emp, (select deptno, avg(sal) 平均工资 from emp group by deptno) as tmp wherre emp.deptno=tmp.deptno and emp.sal > 平均工资) as t1, dept where t1.deptno=dept.deptno; +-------+----------+--------+ | ename | loc | deptno | +-------+----------+--------+ | ALLEN | CHICAGO | 30 | | JONES | DALLAS | 20 | | BLAKE | CHICAGO | 30 | | SCOTT | DALLAS | 20 | | KING | NEW YORK | 10 | | FORD | DALLAS | 20 | +-------+----------+--------+ 6 rows in set (0.00 sec)
查找每个部门工资最高的人的姓名、工资、部门、最高工资
//方法一 mysql> select ename, sal, t1.deptno, mymax from emp t1, (select deptno, max(sal) mymax from emp group by deptno) t2 where t1.deptno=t2.deptno and t1.sal=t2.mym max; +-------+---------+--------+---------+ | ename | sal | deptno | mymax | +-------+---------+--------+---------+ | BLAKE | 2850.00 | 30 | 2850.00 | | SCOTT | 3000.00 | 20 | 3000.00 | | KING | 5000.00 | 10 | 5000.00 | | FORD | 3000.00 | 20 | 3000.00 | +-------+---------+--------+---------+ 4 rows in set (0.00 sec) //方法二 mysql> select ename, sal, deptno, sal 最高工资 from emp where sal in (select max(sal) from emp group by deptno); +-------+---------+--------+--------------+ | ename | sal | deptno | 最高工资 | +-------+---------+--------+--------------+ | BLAKE | 2850.00 | 30 | 2850.00 | | SCOTT | 3000.00 | 20 | 3000.00 | | KING | 5000.00 | 10 | 5000.00 | | FORD | 3000.00 | 20 | 3000.00 | +-------+---------+--------+--------------+ 4 rows in set (0.00 sec)
显示每个部门的信息(部门名,编号,地址)和人员数量
方法1:使用多表
mysql> select t1.dname, t1.loc, t2.dept_num, t1.deptno from dept t1, (select deptno, count(*) dept_num from emp group by deptno) t2 where t1.deptno=t2.deptno; ; +------------+----------+----------+--------+ | dname | loc | dept_num | deptno | +------------+----------+----------+--------+ | ACCOUNTING | NEW YORK | 3 | 10 | | RESEARCH | DALLAS | 5 | 20 | | SALES | CHICAGO | 6 | 30 | +------------+----------+----------+--------+ 3 rows in set (0.00 sec)
方法2:使用子查询
-- 1. 对EMP表进行人员统计 select count(*), deptno from emp group by deptno; -- 2. 将上面的表看作临时表 select dept.deptno, dname, mycnt, loc from dept, (select count(*) mycnt, deptno from emp group by deptno) tmp where dept.deptno=tmp.deptno;
解决多表问题的本质:想办法将多表转化成为单表,所以在mysql中,所有select的问题都可以转化成为单表问题
合并查询
在实际应用中,为了合并多个select的执行结果,可以使用集合操作符 union,union all
union
该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行。
案例:将工资大于2500或职位是MANAGER的人找出来
会去除重复行
mysql> select ename, sal, job from EMP where sal>2500 union -> select ename, sal, job from EMP where job='MANAGER';--去掉了重复记录 +-------+---------+-----------+ | ename | sal | job | +-------+---------+-----------+ | JONES | 2975.00 | MANAGER | | BLAKE | 2850.00 | MANAGER | | SCOTT | 3000.00 | ANALYST | | KING | 5000.00 | PRESIDENT | | FORD | 3000.00 | ANALYST | | CLARK | 2450.00 | MANAGER | +-------+---------+-----------+
union all
案例:将工资大于25000或职位是MANAGER的人找出来
注意:列数必须要是一样的,不会去除重复行
mysql> select ename, sal, job from emp where sal>2500 union all -> select ename, sal, job from emp where job='MANAGER'; +-------+---------+-----------+ | ename | sal | job | +-------+---------+-----------+ | JONES | 2975.00 | MANAGER | | BLAKE | 2850.00 | MANAGER | | SCOTT | 3000.00 | ANALYST | | KING | 5000.00 | PRESIDENT | | FORD | 3000.00 | ANALYST | | JONES | 2975.00 | MANAGER | | BLAKE | 2850.00 | MANAGER | | CLARK | 2450.00 | MANAGER | +-------+---------+-----------+
实战OJ练习
获取所有非manager的员工emp_no_牛客题霸_牛客网
结语:
随着这篇博客接近尾声,我衷心希望我所分享的内容能为你带来一些启发和帮助。学习和理解的过程往往充满挑战,但正是这些挑战让我们不断成长和进步。我在准备这篇文章时,也深刻体会到了学习与分享的乐趣。
在此,我要特别感谢每一位阅读到这里的你。是你的关注和支持,给予了我持续写作和分享的动力。我深知,无论我在某个领域有多少见解,都离不开大家的鼓励与指正。因此,如果你在阅读过程中有任何疑问、建议或是发现了文章中的不足之处,都欢迎你慷慨赐教。
你的每一条反馈都是我前进路上的宝贵财富。同时,我也非常期待能够得到你的点赞、收藏,关注这将是对我莫大的支持和鼓励。当然,我更期待的是能够持续为你带来有价值的内容。