在本篇文章中,我们将学习如何使用Navicat Premium作为数据库客户端编写包含自联接的查询。
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中的列:

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_nameFROM customer c1, customer c2WHERE c1.last_name = c2.first_nameORDER BY c1.last_name;
Navicat的自动完成功能在编写查询时非常有用,因为它有助于避免拼写错误并且不得不猜测列名。因此,它对于选择字段特别有用:

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

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

这是生成的SQL语句:
SELECTc1.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_nameFROMcustomer AS c1INNER JOIN customer AS c2 ON c1.last_name = c2.first_nameORDER BYcustomer_1_last_name ASC;
希望文章内容对您有帮助~
想要购买Navicat Premium正版授权,或了解更多产品信息请点击“咨询在线客服”
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!