MySQL中的同表查询(Self-join)是指在同一张表中进行连接操作。这种查询通常用于比较表中的行与自身或其他行的关系。例如,比较员工与其经理的薪资差异,或者查找具有相同职位的员工。
DISTINCT
关键字去除重复行。EXPLAIN
关键字查看查询计划,优化查询。假设我们有一个名为employees
的表,结构如下:
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
employee_name VARCHAR(100),
position VARCHAR(50),
salary DECIMAL(10, 2),
manager_id INT
);
SELECT e1.employee_name AS Employee, e2.employee_name AS Manager, e1.salary AS EmployeeSalary, e2.salary AS ManagerSalary
FROM employees e1
JOIN employees e2 ON e1.manager_id = e2.employee_id;
SELECT e1.employee_name, e2.employee_name
FROM employees e1
JOIN employees e2 ON e1.position = e2.position AND e1.employee_id <> e2.employee_id;
通过以上内容,您可以更好地理解MySQL同表查询的基础概念、优势、类型、应用场景以及常见问题的解决方法。
领取专属 10元无门槛券
手把手带您无忧上云