内连接([INNER] JOIN)

Exisi 2023-02-25 09:02:32
Categories: Tags:
  • JOIN 等价于 INNER JOIN,是简化的写法,JOIN 返回两个表中联结字段相等的行,即得到的结果是两张表的交集。

 

 

  • 当至少有一个同属于两表的行符合联接条件时,内联接才返回行。 内联接消除与另一个表中的任何行不匹配的行

语法

table_reference

[INNER | CROSS] JOIN

| STRAIGHT_JOIN

table_factor

[ ON search_condition

  | USING (column_name [, column_name] ...)

]

[WHERE where_condition];

 

参数

说明

table_reference{

table_factor | joined_table

}

参数

描述

table_factor

表的引用语句

joined_table

可以引用自身语句嵌套

 

table_factor{

tbl_name

[PARTITION

partition_name

[partition_name]

]

[[AS] alias]

[

index_hint,

[index_hint]

]

| [LATERAL] table_subquery [AS] alias [(col_list)]

| ( table_references )

[

ON search_condition

| USING (column_name [, column_name] ...)

]

}

参数

描述

table_factor

表的引用语句

[PARTITION

partition_name

[partition_name]

]

SELECT 支持使用 PARTITION 子句的显式分区选择,其中包含分区或子分区(或两者)列表,跟在 table_reference 中的表名之后。在这种情况下,仅从列出的分区中选择行,而忽略表的任何其他分区

属性

描述

partition_name

要使用的分区或子分区的逗号分隔列表。此列表中的每个名称必须是指定表的现有分区或子分区的名称;如果未找到任何分区或子分区,则语句将失败并返回错误(分区'partition_name'不存在)。partition_names中命名的分区和子分区可以按任何顺序列出,并且可能重叠

 

[[AS] alias]

为表的创建别名

index_hint{

USE {INDEX|KEY}

[FOR {JOIN|ORDER BY|GROUP BY}]

[

index_name

[,index_name],

]

| {IGNORE|FORCE} {INDEX|KEY}

[FOR {JOIN|ORDER BY|GROUP BY}]

(index_name [, index_name],…)

 

}

属性

描述

index_name

数据列在表中的索引

 

[LATERAL]

派生表的前缀参数,表示允许派生表引用它所在的FROM子句中的其他表。

table_subquery

子查询

alias

别名

[(col_list)]

列名集合

table_references

table_reference的集合

search_condition

条件语句

column_name

列名

 

search_condition

条件语句

column_name

数据列名

[WHERE where_condition]

WHERE条件语句

 

示例

SELECT id,name

FROM student s

INNER JOIN class c

ON s.id = c.studentID;

 

运行结果如下:

id

name

202213

张三

322342

李四

示例

SELECT id,name

FROM student s

INNER JOIN class c

ON s.id = c.studentID

WHERE s.name LIKE '%';

 

运行结果如下:

id

name

202213

张三

  • 如果省略 ON 条件,将会返回两张表的合并结果