彩票走势图

Navicat使用教程:编写包含SQL自连接的查询

翻译|使用教程|编辑:莫成敏|2019-08-28 11:42:56.277|阅读 689 次

概述:在本篇文章中,我们将学习如何使用Navicat Premium作为数据库客户端编写包含自联接的查询。

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

相关链接:

Navicat Premium 是一套数据库管理工具,让你使用一个程序即可同時连接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库。

在线订购  试用下载

有时需要获取驻留在同一个表中的相关数据。为此,需要一种特殊的连接,称为自连接。在本篇文章中,我们将学习如何使用Navicat Premium作为数据库客户端编写包含自联接的查询。

语法

SELF JOIN的基本语法如下:

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

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

一个例子

在Sakila示例数据库中,有一个客户表,其中包含与客户相关的信息,例如客户的姓名、电子邮件和地址。以下是Navicat Table Desginer中的列:

40customer_table_design.jpg我们可以使用自连接来检索姓氏与另一个客户的名字相匹配的所有客户。我们通过为客户表分配别名来实现这一目标。别名允许我们将表连接到自身,因为它们为表提供了两个唯一的名称,这意味着我们可以查询表,就像它是两个不同的表一样。然后将它们连接到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的自动完成功能在编写查询时非常有用,因为它有助于避免拼写错误并且不得不猜测列名。因此,它对于选择字段特别有用:

41auto-complete.jpg

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

42results.jpg

使用INNER JOIN

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

我们只需将第一个表别名的last_name字段拖到第二个表别名的first_name,查询生成器就会为我们生成JOIN!

43query_builder.jpg

这是生成的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正版授权,或了解更多产品信息请点击

扫描关注慧聚IT微信公众号,及时获取最新动态及最新资讯

1563778777.jpg



标签:

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


为你推荐

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


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP