彩票走势图

数据库管理工具Navicat Premium:如何正确使用自联接

转帖|使用教程|编辑:鲍佳佳|2020-08-19 09:54:41.703|阅读 359 次

概述:有时你可能需要获取位于同一个表中的相关数据。为此,你可以使用一种特殊的联接,称为自联接(Self Join)。在今天的文章中,我们将学习如何使用 Navicat Premium 作为数据库客户端编写包含自联接的查询。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。

点击下载Navicat Premium最新试用版

SQL - 自联接

有时你可能需要获取位于同一个表中的相关数据。为此,你可以使用一种特殊的联接,称为自联接(Self Join)。在今天的文章中,我们将学习如何使用 Navicat Premium 作为数据库客户端编写包含自联接的查询。

语法

自联接的基本语法如下:


SELECT a.column_name, b.column_name...
FROM table1 a, table1 b
WHERE a.common_field = b.common_field;


除了通用字段的链接之外,WHERE 子句还可以根据你的特定要求包含其他表达式。

例子

在 Sakila 示例数据库中,有一个 customer 表,其中包含与客户相关的信息,例如他们的姓名,电子邮箱和地址。以下是 Navicat 表设计器中的列:

我们可以使用自联接来检索姓氏与其他客户的名字相匹配的所有客户。我们通过为 customer 表分配别名来实现这一目标。别名允许我们将表与自身联接,因为它们为表提供了两个唯一的名称,这意味着我们可以当它们是两个不同的表进行查询。然后以 last_name 和 first_name 字段将它们联接:


SELECT
c1.customer_id as customer_1_id,
c1.first_name as customer_1_first_name,
c1.last_name as customer_1_last_name,
c2.customer_id as customer_2_id,
c2.first_name as customer_2_first_name,
c2.last_name
FROM customer c1,
customer c2
WHERE c1.last_name = c2.first_name
ORDER BY c1.last_name;


Navicat 的自动完成功能在编写查询时非常有用,因为它有助于避免拼写错误并猜测列名。因此,它对于选择字段特别有用:

运行查询会生成以下结果:

使用 INNER JOINN

将表与自身联接的另一种方法是使用 INNER JOIN。如果你不确定如何做到这一点,Navicat 可以帮助你!它提供了一个名为“查询创建工具”的有用工具,用于直观地构建查询。它允许你在不太了解 SQL 的情况下创建和编辑查询。数据库对象显示在左侧窗格中。而在右侧窗格分为两部分:上面的“图表设计”窗格和下面的“语法”窗格。

我们只需将第一个表别名的 last_name 字段拖到第二个表别名的 first_name,查询创建工具就会为我们生成联接!

这是生成的 SQL 语句


SELECT
c1.customer_id AS customer_1_id,
c1.first_name AS customer_1_first_name,
c1.last_name AS customer_1_last_name,
c2.customer_id AS customer_2_id,
c2.first_name AS customer_2_first_name,
c2.last_name
FROM
customer AS c1
INNER JOIN customer AS c2 ON c1.last_name = c2.first_name
ORDER BY
customer_1_last_name ASC
;


总结

在今天的文章中,我们学习了如何使用Navicat Premium编写包含自联接的查询。欢迎前往Navicat Premium下载试用

现Avicat Premium企业版限时优惠最低仅售5004!点击查看优惠详情或咨询慧都客服获取更多优惠 !
标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP