多表查询的核心玩法就是让多个表“串起来”一块查数据,这招在写后台业务时有用。
MySQL 的多表查询,说白了就是靠JOIN把几个表搭起关系桥。你想查员工的部门名、工资等级、甚至上级的名字,多表搞定,单表真做不到。
最常见的坑就是笛卡尔积,一不小心忘写连接条件,就会看到员工和部门全排列。结果超长,内容乱七八糟,查了个寂寞。交叉连接(CROSS JOIN)也是这种“没头脑”的匹配方式,慎用。
要这问题,核心就是加上连接条件。比如employees.department_id = departments.department_id
,这一句不写,多半要炸。
连接方式有好几种,最常用的是等值连接,再复杂点可以用非等值连接,比如工资比预算高的也能查。再往下是内连接、左连接、右连接,连全连接都有,能组合出各种查法。
推荐你在查询里多用别名,写起来清爽,比如FROM employees AS e
,少敲代码眼睛也轻松。
还有个进阶招式是自连接,也就是一个表和自己玩连接,比如员工找上级、分类找父级都靠它。记得给同一个表起不同别名。
哦对了,多表查询经常跟聚合函数、GROUP BY、ORDER BY搭配用,查报表、做顺手。如果你搞业务系统,学会这个,事半功倍。