连接

SQL 连接(JOIN)

August 21, 2022
SQL, JOIN, 连接

SQL JOIN # SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。 最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)。 SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行。 JOIN演示 # sqlite> select domains.id,domains.domainname,logs.google,logs.baidu from domains inner join logs on domains.id=logs.id; ID DomainName google baidu -- ---------------- ------ ----- 1 aisoc.cn 1003 2075 2 ado.ink 1770 1660 3 nrdoc.com 1496 2621 4 getos.org 1864 2745 5 litiaotiao.cn 1574 2295 6 dotbbq.com 2927 2448 7 lyq.wiki 2543 395 8 les.moe 1166 350 9 regex. ...

SQL INNER JOIN 关键字

August 28, 2022
SQL, JOIN, 连接, INNER JOIN, INNER

SQL INNER JOIN 关键字 # INNER JOIN 关键字在表中存在至少一个匹配时返回行。 SQL INNER JOIN 语法 # SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name; 或: SELECT column_name(s) FROM table1 JOIN table2 ON table1.column_name=table2.column_name; 注释:INNER JOIN 与 JOIN 是相同的。 SQL INNER JOIN 实例 # MariaDB [learnsql]> select domains.id,domains.domainname,logs.baidu,logs.google from domains inner join logs on domains.id=logs.id order by logs.google; +----+---------------+--------+--------+ | id | domainname | baidu | google | +----+---------------+--------+--------+ | 47 | manjushri. ...

SQL LEFT JOIN 关键字

August 28, 2022
SQL, JOIN, 连接, LEFT JOIN, LEFT

SQL LEFT JOIN 关键字 # LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。 SQL LEFT JOIN 语法 # SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name; 或: SELECT column_name(s) FROM table1 LEFT OUTER JOIN table2 ON table1.column_name=table2.column_name; 注释:在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN。 SQL LEFT JOIN 实例 # 下面的 SQL 语句将返回所有网站及他们的访问量(如果有的话)。 以下实例中我们把 domains 作为左表,logs 作为右表: MariaDB [learnsql]> select domains.domainname,logs.google from domains left join logs on domains.id=logs.id; +---------------+--------+ | domainname | google | +---------------+--------+ | getos. ...

SQL RIGHT JOIN 关键字

August 28, 2022
SQL, JOIN, 连接, RIGHT JOIN, RIGHT

SQL RIGHT JOIN 关键字 # RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。 SQL RIGHT JOIN 语法 # SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name; 或: SELECT column_name(s) FROM table1 RIGHT OUTER JOIN table2 ON table1.column_name=table2.column_name; 注释:在某些数据库中,RIGHT JOIN 称为 RIGHT OUTER JOIN。 SQL RIGHT JOIN 实例 # 下面的 SQL 语句将返回网站的访问记录。 以下实例中我们把 domains 作为左表,logs 作为右表: MariaDB [learnsql]> select domains.domainname,logs.google,logs.baidu,logs.sogou from domains right join logs on domains.id=logs.id order by logs.baidu desc; +---------------+--------+--------+--------+ | domainname | google | baidu | sogou | +---------------+--------+--------+--------+ | NULL | 000749 | 002977 | 000358 | | NULL | 002123 | 002939 | 000331 | | NULL | 002701 | 002843 | 000315 | | pornie. ...

SQL FULL OUTER JOIN 关键字

August 28, 2022
SQL, JOIN, 连接, FULL OUTER JOIN, FULL OUTER

SQL FULL OUTER JOIN 关键字 # FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行. FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。 SQL FULL OUTER JOIN 语法 SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name=table2.column_name; SQL FULL OUTER JOIN 实例 # 下面的 SQL 语句选取所有网站访问记录。 MySQL中不支持 FULL OUTER JOIN,你可以在 SQL Server 测试以下实例。 SELECT domains.domainname, logs.baidu, FROM domains FULL OUTER JOIN logs ON domains.id=logs.id ORDER BY logs.baidu DESC; 注释:FULL OUTER JOIN 关键字返回左表(doamins)和右表(logs)中所有的行。如果 “domains” 表中的行在 “logs” 中没有匹配或者 “logs” 表中的行在 “domains” 表中没有匹配,也会列出这些行。

SQL UNION 操作符

August 28, 2022
SQL, 连接, UNION

SQL UNION 操作符合并两个或多个 SELECT 语句的结果。 SQL UNION 操作符 # UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。 SQL UNION 语法 # SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2; 注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。 SQL UNION ALL 语法 # SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2; 注释:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。