首页 > 其他分享 >openGauss JOIN

openGauss JOIN

时间:2024-04-26 11:23:26浏览次数:12  
标签:JOIN name BJ 连接 openGauss Lily Grace

JOIN

JOIN子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。

在openGauss中,JOIN有五种连接类型:

  • CROSS JOIN :交叉连接
  • INNER JOIN:内连接
  • LEFT OUTER JOIN:左外连接
  • RIGHT OUTER JOIN:右外连接
  • FULL OUTER JOIN:全外连接

以表table1和表table2为例说明不同连接类型,表数据如下:

openGauss=# SELECT * FROM table1;
 name  | city
-------+------
 Joes  | BJ
 Lily  | BJ
 James | SH
 Grace | SZ
(4 rows)

openGauss=# SELECT * FROM table2;
 id | name  | dept
----+-------+-------
  1 | Tommy | IT
  2 | Lily  | IT
  3 | Li    | sales
  4 | Grace | IT
(4 rows)

交叉连接

交叉连接即笛卡儿乘积,是指两个关系中所有元组的任意组合。

示例:将表table1和表table2进行交叉连接,结果如下。

openGauss=# SELECT * FROM table1 CROSS JOIN table2;
 name  | city | id | name  | dept
-------+------+----+-------+-------
 Joes  | BJ   |  1 | Tommy | IT
 Joes  | BJ   |  2 | Lily  | IT
 Joes  | BJ   |  3 | Li    | sales
 Joes  | BJ   |  4 | Grace | IT
 Lily  | BJ   |  1 | Tommy | IT
 Lily  | BJ   |  2 | Lily  | IT
 Lily  | BJ   |  3 | Li    | sales
 Lily  | BJ   |  4 | Grace | IT
 James | SH   |  1 | Tommy | IT
 James | SH   |  2 | Lily  | IT
 James | SH   |  3 | Li    | sales
 James | SH   |  4 | Grace | IT
 Grace | SZ   |  1 | Tommy | IT
 Grace | SZ   |  2 | Lily  | IT
 Grace | SZ   |  3 | Li    | sales
 Grace | SZ   |  4 | Grace | IT
(16 rows)

内连接

使用内连接时,如果两个表的相关字段满足连接条件,就从这两个表中提取数据并组合成新的记录,创建一个新的结果表。也就是在内连接查询中,只有满足条件的元组才能出现在结果关系中。

内连接是一种最常用的连接类型,也是默认的连接类型。

示例:查询表table1和表table2中字段name相同的列。

openGauss=# SELECT * FROM table1 a INNER JOIN table2 b ON a.name = b.name;
 name  | city | id | name  | dept
-------+------+----+-------+------
 Lily  | BJ   |  2 | Lily  | IT
 Grace | SZ   |  4 | Grace | IT
(2 rows)

左外连接

左外连接是指在连接查询中,将关键字左端表中所有的元组都列出来,如果能在右端的表中找到匹配的元组,显示匹配元组内容。如果在右端的表中,不能找到匹配的元组,那么对应的元组是空值(NULL)。

左外连接查询语句使用的关键字为LEFT OUTER JOIN,也就是说,左外连接的含义是限制连接关键字右端的表中的数据必须满足连接条件,而左端的表中的数据无论是否满足连接条件,均输出左端表中的内容。

示例:

openGauss=# SELECT * FROM table1 a LEFT OUTER JOIN table2 b ON a.name = b.name;
 name  | city | id | name  | dept
-------+------+----+-------+------
 Joes  | BJ   |    |       |
 Lily  | BJ   |  2 | Lily  | IT
 James | SH   |    |       |
 Grace | SZ   |  4 | Grace | IT
(4 rows)

右外连接

右外连接与左外连接类似,只是关键字右端表中的所有元组都列出,限制左端表的数据必须满足连接条件,而右端表中的数据无论是否满足连接条件,均输出表中的内容。

右外连接查询语句的关键字为RIGHT OUTER JOIN。

示例:

openGauss=# SELECT * FROM table1 a RIGHT OUTER JOIN table2 b ON a.name = b.name;
 name  | city | id | name  | dept
-------+------+----+-------+-------
 Lily  | BJ   |  2 | Lily  | IT
 Grace | SZ   |  4 | Grace | IT
       |      |  3 | Li    | sales
       |      |  1 | Tommy | IT
(4 rows)

全外连接

全外连接查询的特点是左、右两端表中的元组都输出,如果没能找到匹配的元组,就使用NULL来代替。

示例:

openGauss=# SELECT * FROM table1 a FULL OUTER JOIN table2 b ON a.name = b.name;
 name  | city | id | name  | dept
-------+------+----+-------+-------
 Joes  | BJ   |    |       |
 Lily  | BJ   |  2 | Lily  | IT
 James | SH   |    |       |
 Grace | SZ   |  4 | Grace | IT
       |      |  3 | Li    | sales
       |      |  1 | Tommy | IT
(6 rows)

标签:JOIN,name,BJ,连接,openGauss,Lily,Grace
From: https://www.cnblogs.com/renxyz/p/18159582

相关文章

  • openGauss NULL值
    NULL值NULL值代表未知数据。无法比较NULL和0,因为它们是不等价的。创建表时,可以指定列可以存放或者不能存放NULL值,详情请参见NOTNULL约束。本节介绍ISNULL和ISNOTNULL操作符。创建表customer_t1,数据如下:openGauss=#SELECT*FROMcustomer_t1;c_customer_sk|c_custome......
  • openGauss ORDER-BY子句
    ORDERBY子句ORDERBY子句用于对SELECT语句检索得到的一列或者多列数据进行升序(ASC)或者降序(DESC)排列。语法格式SELECT{*|[column,...]}[FROMfrom_item[,...]][ORDERBY{expression[ASC|DESC]}];参数说明ORDERBY子句对SELECT语句检索得到的数据进......
  • openGauss INSERT-INTO语句
    INSERTINTO语句在创建一个表后,表中并没有数据,使用这个表之前,需要向表中插入数据。INSERTINTO语句用于向表中插入新记录。该语句可以插入一行数据也可以同时插入多行数据。语法格式INSERTINTOtable_name[(column_name[,...])]{DEFAULTVALUES|VALUES{(......
  • JPA Example 默认 join
    起因:由于同事增加了一个对象关联。并且采用了Example查询,导致了一个Null的问题。 主表:BoBookingorder关联表:BoJobcontainerinfo 一关联如下:@Entity@Table(name="bo_bookingorder",catalog="kintech_bo")publicclassBoBookingorder{privateStringbooki......
  • index join SLCT 条件过滤性好,怎么将它下推?
    sqlselect--/*+enable_index_filter(1)enable_hash_join(0)use_nl_with_index(authallrea2_,IDX_DM_20236274)*/--/*+no_semi_gen_crossHI_RIGHT_ORDER_FLAG(2)ADAPTIVE_NPLN_FLAG(3)USE_INDEX_SKIP_SCAN(1)*/citicscoma0_.fd_idasfd1_88_,citi......
  • Cassandra节点重启失败 java.lang.RuntimeException: A node with address *** alread
    问题杀死一个节点后重启报节点已存在:java.lang.RuntimeException:Anodewithaddress***alreadyexists,cancellingjoin.Usecassandra.replace_addressifyouwanttoreplacethisnode.解决方法到另一个节点Cassandra的bin目录./nodetoolstatus查看需要重启......
  • [987] geopandas.sjoin
    geopandas.sjoin:SpatialjoinoftwoGeoDataFrames.geopandas.sjoin(left_df, right_df, how='inner', predicate='intersects', lsuffix='left', rsuffix='right', **kwargs)Parameters:left_df,right_df:GeoDataFram......
  • path.resolve、path.join、path.posix.join对比分析以及适用场景举例
    path.resolve、path.join、path.posix.join对比分析以及适用场景举例path.resolve、path.join和path.posix.join都是Node.js中用于处理和操作文件路径的方法,但它们各自有特定的功能和使用场景。以下是它们的对比分析和适用场景举例:1.path.resolve([...paths])功能:path.......
  • k8s join失败的问题汇总
     环境:centos7.6;kubeadm安装k8s集群(版本v1.26.0);容器引擎对应cri-dockerd-0.3.1-3.el7.x86_64.rpm(这里其实还发生一件事,装k8s1.25的时候,容器引擎太低,导致无法识别,于是换了个新版本的)报错一:FileContent--proc-sys-net-ipv4-ip_forward]:/proc/sys/net/ipv4/ip_forwardcont......
  • openGauss Slow-Query-Diagnosis-慢SQL根因分析命令参考
    命令参考表1gs_dbmindcomponentslow_query_diagnosis命令行说明参数参数说明取值范围-h,--help帮助命令-action动作参数show:结果展示clean:清理结果diagnosis:交互诊断-c,--conf配置目录---query慢SQL文本*--start-time显示开始时间......