mysql关联两个表

MySQL关联是指在查询过程中,根据某个或多个条件将两个或多个表进行连接,从而获取到需要的数据,在MySQL中,关联操作主要通过INNER JOIN、LEFT JOIN(或LEFT OUTER JOIN)、RIGHT JOIN(或RIGHT OUTER JOIN)和FULL JOIN(或FULL OUTER JOIN)等关键字实现。

1、INNER JOIN:内连接,只返回两个表中满足关联条件的记录,如果某个表中的记录在另一个表中没有匹配的记录,则不会返回该记录。

mysql关联两个表

语法:

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

示例:

SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.department_id;

2、LEFT JOIN(或LEFT OUTER JOIN):左连接,返回左表中的所有记录,以及右表中满足关联条件的记录,如果右表中没有匹配的记录,则用NULL填充。

语法:

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

示例:

SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id;

3、RIGHT JOIN(或RIGHT OUTER JOIN):右连接,返回右表中的所有记录,以及左表中满足关联条件的记录,如果左表中没有匹配的记录,则用NULL填充。

mysql关联两个表

语法:

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

示例:

SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.department_id;

4、FULL JOIN(或FULL OUTER JOIN):全连接,返回两个表中满足关联条件的记录,以及左表和右表中没有匹配的记录,如果没有匹配的记录,则用NULL填充,需要注意的是,MySQL不支持FULL JOIN关键字,可以使用LEFT JOIN和RIGHT JOIN组合实现全连接。

语法:

SELECT column_name(s)
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name
UNION ALL
SELECT column_name(s) FROM table2 RIGHT JOIN table1 ON table1.column_name = table2.column_name;

示例:

SELECT employees.name, departments.department_name FROM employees LEFT JOIN departments ON employees.department_id = departments.department_id UNION ALL SELECT employees.name, departments.department_name FROM departments RIGHT JOIN employees ON employees.department_id = departments.department_id;

5、CROSS JOIN:交叉连接,返回两个表中所有可能的组合,需要注意的是,交叉连接的结果集大小等于两个表的记录数之积,在实际应用中,交叉连接很少使用,因为它会产生大量的重复数据。

mysql关联两个表

语法:

SELECT column_name(s) FROM table1 CROSS JOIN table2;

示例:

SELECT employees.name, departments.department_name FROM employees CROSS JOIN departments;

6、SELF JOIN:自连接,将一个表与自身进行关联,自连接通常用于比较表中的记录或者获取表中的某些信息,需要注意的是,自连接的条件必须放在ON子句中。

语法:

SELECT column_name(s) FROM table1, table1 AS t1 WHERE table1.column_name = t1.column_name; -- ANSI语法(推荐)
SELECT column_name(s) FROM table1 t1, table1 t2 WHERE t1.column_name = t2.column_name; -- 非ANSI语法(不推荐)

示例:

-- ANSI语法(推荐)
SELECT e1.name, e2.name FROM employees e1, employees e2 WHERE e1.manager_id = e2.employee_id; -- 获取每个员工的经理姓名(假设manager_id是员工表中表示经理ID的字段)
-- 非ANSI语法(不推荐)
SELECT e1.name, e2.name FROM employees e1, employees e2 WHERE e1.manager_id = e2.employee_id; -- 同上(获取每个员工的经理姓名)
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构》的官方网站或公开发表的信息,内容仅供参考使用!本站为非盈利性质站点,本着免费分享原则,发布内容不收取任何费用也不接任何广告! 【若侵害到您的利益,请联系我们删除处理。投诉邮箱:i77i88@88.com】

本文链接:http://7707.net/mysql/202401061353.html

发表评论

提交评论

评论列表

还没有评论,快来说点什么吧~