MySQL学习笔记(6)
程序员文章站
2022-03-08 17:52:57
...
-
按多字段分组查询
按照同一个分公司、同一个部门查询员工的平均工资:
USE test;
SHOW TABLES;
SELECT
AVG(salary) 平均工资,department 部门,branch_company 分公司
FROM
employee
GROUP BY
department,branch_company;
-
添加排序的分组查询
对上述得到的平均工资降序排序:
USE test;
SHOW TABLES;
SELECT
AVG(salary) 平均工资,department 部门,branch_company 分公司
FROM
employee
GROUP BY
department,branch_company
ORDER BY
平均工资
DESC;
- 连接查询——多个表之间的字段值相互匹配
USE test;
SHOW TABLES;
SELECT
`name`,job
FROM
employee_job,job
WHERE
employee_job.job_id=job.job_id;
表名:employee_job
name | job_id |
---|---|
Justin | 2 |
Nancy | 2 |
Tom | 1 |
Lee | 3 |
Thomas | 1 |
Douglas | 4 |
表名:job
jod_id | job |
---|---|
1 | 职工 |
2 | 主管 |
3 | 部门经理 |
4 | 总监 |
例如上述两个表中,我们要将第一个表中员工的工作职务编号与第二个表中的职务相匹配,常规方法易导致笛卡尔集错误。
USE test;
SHOW TABLES;
SELECT
`name`,job
FROM
employee_job,job;
显然这样做是分别拿第一个表中的每一个name字段与第二个表中的所有job字段相匹配。
正确代码:
USE test;
SHOW TABLES;
SELECT
`name`,job
FROM
employee_job,job
WHERE
employee_job.job_id=job.job_id;
上一篇: MySQL基础学习(一)