要说MySQL的关联查询,首先先说一下笛卡尔积,
有两个集合 A = {1, 2},B = {1, 3},这两个集合的笛卡尔积 A * B就有四种情况, A * B = {(1,1), (1,3), (2,1),(2,3)}
1 | 2 |
1 | 3 |
2 | 1 |
2 | 3 |
假设现在有两张表,table_A和 table_B
a_user_id | a_name |
1 | aa |
2 | ab |
3 | ac |
b_user_id | b_name |
1 | ba |
2 | bb |
4 | bc |
1、内关联查询,INNER JOIN
SELECT * FROM table_A INNER JOIN table_B ON a_user_id = b_user_id;
table_A INNER JOIN table_B 这样查询到的结果就是 表 table_A和table_B 的交集。也就是a_user_id 和 b_user_id 的交集 = 1,2;
2、左关联, LEFT JOIN
SELECT * FROM table_A LEFT JOIN table_B ON a_user_id = b_user_id;
table_A LEFT JOIN table_B 这样查询到的结果就是表 table_A 全部数据 和 table_B的交集。也就是a_user_id 和 b_user_id 的交集 = 1,2,3;
3、右关联, RIGHT JOIN
SELECT * FROM table_A RIGHT JOIN table_B ON a_user_id = b_user_id;
table_A RIGHT JOIN table_B 这样查询到的结果就是表 table_B全部数据和 table_A的交集。也就是a_user_id 和 b_user_id 的交集 = 1,2,4;
也可以用联合查询,就不能用ON了。
SELECT * FROM table_A, table_B WHERE a_user_id = b_user_id;