是的。举个栗子,表 t1 (b=10 * a)和 t2(b=100 * a) 数据如下,但是 t2 多一列且第一列为 10: mysql> select * from t1; +----+------+------+ | id | a | b | +----+------+------+ | 1 | 1 | 10 | | 2 | 2 | 20 | +----+------+------+ mysql> select * from t2; +----+------+------+ | id | a | b | +----+------+------+ | 1 | 1 | 10 | | 2 | 2 | 200 | | 3 | 3 | 300 | +----+------+------+ 对于 t1 到 t2 左连接:可以看出左连接是从左表 t1 的角度出发,尽量到右表 t2 中满足匹配条件 t1.a = t2.a and t1.b = t2.b 的列。如果有,就列在结果集中,如果没有则默认为 NULL mysql> select * from t1 left join t2 on (t1.a = t2.a and t1.b = t2.b); +----+------+------+------+------+------+ | id | a | b | id | a | b | +----+------+------+------+------+------+ | 1 | 1 | 10 | 1 | 1 | 10 | | 2 | 2 | 20 | NULL | NULL | NULL | +----+------+------+------+------+------+ 对于 t1 到 t2 右连接:可以看出是从右表 t2 的角度出发,尽量到左表 t1 中满足匹配条件 t1.a = t2.a and t1.b = t2.b 的列。如果有,就列在结果集中,如果没有则默认为 NULL mysql> select * from t1 right join t2 on (t1.a = t2.a and t1.b = t2.b); +------+------+------+----+------+------+ | id | a | b | id | a | b | +------+------+------+----+------+------+ | 1 | 1 | 10 | 1 | 1 | 10 | | NULL | NULL | NULL | 2 | 2 | 200 | | NULL | NULL | NULL | 3 | 3 | 300 | +------+------+------+----+------+------+ 另外还有 INNER JOIN 和 FULL JOIN 等关联关系,可以参考:SQL 基础教程
是的。
举个栗子,表 t1 (
b=10 * a
)和 t2(b=100 * a
) 数据如下,但是 t2 多一列且第一列为 10:对于 t1 到 t2 左连接:
可以看出左连接是从左表
t1
的角度出发,尽量到右表t2
中满足匹配条件t1.a = t2.a and t1.b = t2.b
的列。如果有,就列在结果集中,如果没有则默认为NULL
对于 t1 到 t2 右连接:
可以看出是从右表
t2
的角度出发,尽量到左表t1
中满足匹配条件t1.a = t2.a and t1.b = t2.b
的列。如果有,就列在结果集中,如果没有则默认为NULL
另外还有 INNER JOIN 和 FULL JOIN 等关联关系,可以参考:SQL 基础教程