您好,欢迎来到华拓科技网。
搜索
您的当前位置:首页MySQL联表查询的简单示例

MySQL联表查询的简单示例

来源:华拓科技网


结果中同名的列只出现一次,且都是值相同的那些记录。

通过向两表中插入一条新记录,令它们的 j 不相同,再进行测试。

mysql> INSERT INTO t1 VALUES(2, 2);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO t2 VALUES(2, 3);
Query OK, 1 row affected (0.00 sec)

mysql> select * from t1 natural join t2;
+------+------+------+
| j | i | k |
+------+------+------+
| 2 | 2 | 1 |
+------+------+------+
1 row in set (0.00 sec)
  • USING 和 ON 作为条件时其他的联合条件是一样的,可互相转换。但在 SELECT * 返回结果时,还是有差异的。前者只在 USING 中指定的列中返回合并后的结果,后者则针对的是表中所有列。
  • a LEFT JOIN b USING (c1, c2, c3)
    a LEFT JOIN b ON a.c1 = b.c1 AND a.c2 = b.c2 AND a.c3 = b.c3

    USING 情况下的返回:

    COALESCE(a.c1, b.c1), COALESCE(a.c2, b.c2), COALESCE(a.c3, b.c3)

    ON 的返回:

    a.c1, a.c2, a.c3, b.c1, b.c2, b.c3

    ON 语句中只能引用其操作表(operands)中的表。

    CREATE TABLE t1 (i1 INT);
    CREATE TABLE t2 (i2 INT);
    CREATE TABLE t3 (i3 INT);

    针对上面的表,以下查询会报错:

    mysql> SELECT * FROM t1 JOIN t2 ON (i1 = i3) JOIN t3;
    ERROR 1054 (42S22): Unknown column 'i3' in 'on clause'

    而以下查询则可以:

    mysql> SELECT * FROM t1 JOIN t2 JOIN t3 ON (i1 = i3);
    Empty set (0.00 sec)

    因为此时 t3 在 ON 语句的操作范围内了。

    相关资源

  • MySQL 8.0 Reference Manual - 13.2.10.2 JOIN Syntax
  • MySQL 8.0 Reference Manual - 13.2.10.3 UNION Syntax
  • 总结

    Copyright © 2019- huatuo6.cn 版权所有 赣ICP备2024042791号-9

    违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

    本站由北京市万商天勤律师事务所王兴未律师提供法律服务