SQL实战新手入门:自联接-在表内部查找答案

 我来答
新科技17
2022-10-17 · TA获得超过5912个赞
知道小有建树答主
回答量:355
采纳率:100%
帮助的人:75.5万
展开全部

   自联接 在表内部查找答案

  这是一个新颖的概念 将一个表联接到自身 为什么要这么做呢?读者可能会感到疑惑 表中不是已经包含所需的信息了吗?这既可以说 是 也可以说 否 例如 尝试这样的查询 请按照添加到数据库中的顺序列出在同一年出版的图书列表

  可以使用一个自联接查询来回答这一问题

  SELECT

  fst bk_id

   fst bk_title

   snd bk_id

   snd bk_title

  FROM books fst JOIN books snd

  ON fst bk_published_year = snd bk_published_year

  WHERE fst bk_id < snd bk_id;

  bk_id bk_title bk_id bk_title

  

   A La Recherche du Temps Perdu Steppenwolf

   Letters From Earth A Short History of Nearly…

  ( row(s) affected)

  首先 请注意已经为该表定义了别名 否则在该语句的其他部分中数据库引擎将无法区分所引用的是哪一个表 在之前的查询中使用别名是一个最佳实践 但在自联接中使用别名是必需的 接下来 根据出版的年份将该表联接到自身 然后再定义筛选条件 指出我们需要同一年出版的不同的图书记录(否则 将从每一个表中获取相同的图书)

  尽管在自联接中将表联接到自身 但必须记住的重要内容是 这时处理的依然是该表的两个实例 对于所有的操作和用途 两者是两个彼此独立的表 在一个查询中 对于一个表可以引用自身多少次并没有明确的限制

  尽管上面的查询结果也可以使用子查询和GROUP BY子句来获得 但却难以在同一行中列出两本图书的名称

  自联接并不是一种特殊类型的联接 但它很好地演示了SQL语法所提供的灵活性

       返回目录 SQL实战新手入门

       编辑推荐

       Oracle索引技术

       高性能MySQL

lishixinzhi/Article/program/SQL/201311/16468

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式