数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

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


发布日期:2023年11月16日
 
SQL实战新手入门:自联接-在表内部查找答案

自联接在表内部查找答案

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

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

SELECT

fstbk_id

fstbk_title

sndbk_id

sndbk_title

FROM books fst JOIN books snd

ON fstbk_published_year = sndbk_published_year

WHERE fstbk_id < sndbk_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

数据仓库与数据挖掘培训视频教程

上一篇:SQL实战新手入门:全联接(FULL JOIN)

下一篇:SQL实战新手入门:交叉联接(CROSS JOIN)