首页 > 数据库 >数据库内外连接

数据库内外连接

时间:2023-05-24 15:47:52浏览次数:39  
标签:sub parent 数据库 id article c1 内外 连接 name

简单介绍

1.内连接:只返回两个表中连接字段相等的行。inner join(等值连接) 只返回两个表中联结字段相等的数据

image

2.左外连接(也称左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。以左表为基表,在from子句中使用关键字left outer join”或关键字“left join”来连接两张表。

image

3.右外连接(也称右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。以右表为基表,在from子句中使用关键字“right outer join”或关键字“right join”来连接两张表。

image

4.全外连接:返回左右表中所有的记录和左右表中连接字段相等的记录。在from子句中使用关键字“full outer join”或关键字“full join”来连接两张表。

image

5.交叉连接(笛卡尔积):返回被连接的两个表所有数据行的笛卡尔积。返回结果集合中的数据行数等于第一个表中复合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。

操作实战

image
需求:如图上是一个文章评论表,其中包含文章评论(parent_id为-1)和子评论(parent_id为某个评论的id),当前需要查询某个文章下的所有评论,且评论中包含子评论,最大层级为2
思路:通过自关联实现文章评论输出,将表分为c和c1,关联条件为c.id=c1.parent_id

  1. 对于如上两表,如果使用内关联,即只取满足关联条件的行,只有一个结果输出
select
       c.id id,c.op_time,c.content,c.from_name,c.to_name, c.parent_id, c.article_id,c1.id sub_id, c1.op_time sub_op_time,c1.content sub_content,c1.from_name sub_from_name,c1.to_name sub_to_name, c1.parent_id sub_parent_id, c1.article_id sub_article_id
from
        rb_comment c
inner JOIN
        rb_comment c1
on
        c.id=c1.parent_id

image
2. 如果使用左外连接或右外连接,由于是自关联查询,结果一样,都为5条(包含全部条数,符合关联条件和不符合关联条件的)

select
       c.id id,c.op_time,c.content,c.from_name,c.to_name, c.parent_id, c.article_id,c1.id sub_id, c1.op_time sub_op_time,c1.content sub_content,c1.from_name sub_from_name,c1.to_name sub_to_name, c1.parent_id sub_parent_id, c1.article_id sub_article_id
from
        rb_comment c
left JOIN
        rb_comment c1
on
        c.id=c1.parent_id

image
3. 如果要满足需求,首先需要进行左外连接,得到全部评论,评论中部分包含子评论(关联条件)。拿到数据后在进行过滤,过滤条件为文章id和parent_id

select
            id, op_time,content,from_name,to_name,parent_id,article_id,sub_id, sub_op_time,sub_content,sub_from_name,sub_to_name,sub_parent_id,sub_article_id
        from
            (select
                 c.id id,c.op_time,c.content,c.from_name,c.to_name, c.parent_id, c.article_id,c1.id sub_id, c1.op_time sub_op_time,c1.content sub_content,c1.from_name sub_from_name,c1.to_name sub_to_name, c1.parent_id sub_parent_id, c1.article_id sub_article_id
             from
                 rb_comment c
                     LEFT OUTER JOIN
                     rb_comment c1
                     on
                         c.id=c1.parent_id) c
        where
            c.parent_id='-1'
            and
            c.article_id=#{article_id}
        order by
            id desc

如果排除文章id的条件,取到的数据为所有主评论,子评论已经通过关联关联到了主评论中

标签:sub,parent,数据库,id,article,c1,内外,连接,name
From: https://www.cnblogs.com/roud/p/17428484.html

相关文章

  • git指令连接库失败:OpenSSL SSL_read: Connection was reset, errno 10054
    一、问题描述无论是gitclone还是gitpush之类的需要连接库的指令都会出现`fatal:unabletoaccess'http://github.com/我的库/':OpenSSLSSL_read:Connectionwasreset,errno10054`报错原因:字面意思:服务器的SSL证书灭有经过第三方机构的签署。网上信息也有的说可能......
  • 58个分类背单词英语词典ACCESS\EXCEL数据库
    英语词典、背单词类的数据已经发了很多很多了,打算今天这一个将是最后一个了,后续没有颠覆性的好的话就不再发这类数据了,今天这一份的背单词数据库好处是有58个分类,之前发过有27个分类的《1万6千多最好的背单词SQLITE数据库》。单词表:36238条记录,可以看一下word_root_id字段的作用......
  • 【Kafka从入门到成神系列 八】Kafka 多线程消费者及TCP连接
    ......
  • 近万条开心猜灯谜猜谜语ACCESS\EXCEL数据库
    元宵节马上就到了,中国民间素有“观灯猜谜”的习俗,今天再给大家一款猜灯谜的数据,看看有没有朋友喜欢(你需要什么数据如果我网站没有也可以交给我找找)。据记载,猜灯谜自南宋起开始流行,至今不衰。“猜灯谜”又叫“打灯谜”,出现在宋朝。南宋时,首都临安每逢元宵节时制谜、猜谜的人众多......
  • 达梦数据库cpu使用占用率过高问题处理
    用户反馈数据库服务器cpu使用率一直很高。整个服务器8个cpu,达梦数据库进程占用5个cpu,如下所示查看数据库会话连接数SELECTSF_GET_PARA_STRING_VALUE(1,'INSTANCE_NAME')AS实例名,STATEAS状态,CLNT_IPAS连接IP,COUNT(*)AS数量FROMV$SESSIONSGROUPBYSTATE,CLNT_IP......
  • 2万多条谜语&脑筋急转弯ACCESS\EXCEL数据库
    这个数据库主要包含两个表,考虑到原破解APP数据就是这样也就不折分了,一个是有5186条记录的脑筯急转弯表,一个是有18326条记录的谜语表,两个表中的记录都有详细的分类字段,具体看截图下的分类统计。脑筋急转弯分类统计:灯谜(79)、动物(81)、儿童(190)、搞笑(77)、经典(110)、冷笑话(338)、数学(80)、......
  • 数据库相关操作
    1. 创建数据库  7371.1 基本语法1. CHARACTER SET:指定数据库采用的字符集,如果不指定字符集,默认utf82. COLLATE:指定数据库字符集的校对规则(常用的utf8_ bin[区分大小写]、utf8 general ci[不区分大小写]注意默认是utf8 general _ci) [举例说明database.sql文件]1.2......
  • 数据库的增删改查
    1. 数据库 C[create]R[read]U[update]D[delete]语句 7501.1 Insert 语句  750 使用 INSERT 语句向表中插入数据。1.1.1 基本语法1.1.2 快速入门  750快速入门案例:1.创建一张商品表goods (id int ,goods_name varchar(10), price double );2.添加2条记录代码在......
  • 150万学术名词中英对照字典ACCESS数据库
    今天这个数据是一款字典的类型的软件,专门用来查询一些学术上面的名词的中英对照,超过180个学科分类,150多万条记录,伴随您悠游于学海之中,是您做学问、写论文的好帮手。主要科目有:電子計算機名詞(107213)、電機工程名詞(100395)、電力工程(68379)、外國地名譯名(64487)、機械工程(49872)、生......
  • IDEA连接github
    在IDEA中添加github账号:File-->Settings-->VersionControl-->GitHub点击+号,添加账号可以选择账号密码登陆或者使用token登陆使用账号密码有时会出现请求错误,网页打开很慢的情况。这里选用Token登录介绍。如何获取Token:https://www.cnblogs.com/cyqf/p/17427933.ht......