SQL Server的JOIN是支持使用小括号修改运算顺序的
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了SQL Server的JOIN是支持使用小括号修改运算顺序的,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2152字,纯文字阅读大概需要4分钟。
内容图文
![SQL Server的JOIN是支持使用小括号修改运算顺序的](/upload/InfoBanner/zyjiaocheng/913/9e99ad79ef3e4c8fbb7741114bf58693.jpg)
假如现在我们的SQL Server数据库中有三个表:[T_A]、[T_B]和[T_C],它们的建表语句如下:
--建表语句[T_A] CREATE TABLE [dbo].[T_A]( [ID_A] [INT] NOT NULL, CONSTRAINT [PK_T_A] PRIMARY KEY CLUSTERED ( [ID_A] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]; --建表语句[[T_B]] CREATE TABLE [dbo].[T_B]( [ID_B] [INT] NOT NULL, CONSTRAINT [PK_T_B] PRIMARY KEY CLUSTERED ( [ID_B] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]; --建表语句[[T_C]] CREATE TABLE [dbo].[T_C]( [ID_C] [INT] NOT NULL, CONSTRAINT [PK_T_C] PRIMARY KEY CLUSTERED ( [ID_C] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY];
[T_A]、[T_B]和[T_C]每个表都只有一个INT类型的列,我们使用下面的语句给这三个表插入数据:
INSERT INTO [dbo].[T_A] VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); INSERT INTO [dbo].[T_B] VALUES (1),(2),(3),(4),(5); INSERT INTO [dbo].[T_C] VALUES (1),(2),(3);
我们都知道默认情况下,SQL Server中的JOIN语句都是按表出现的顺序执行的,例如下面的SELECT语句中,SQL Server会先执行表[T_A]和[T_B]之间的LEFT JOIN,然后再执行表[T_B]和[T_C]之间的INNER JOIN:
SELECT * FROM [dbo].[T_A] LEFT JOIN [dbo].[T_B] ON [T_A].ID_A=[T_B].ID_B INNER JOIN [dbo].[T_C] ON [T_B].ID_B=[T_C].ID_C
执行结果:
由于上面的SELECT语句中,最后INNER JOIN了表[T_C],所以最后查询结果肯定和表[T_C]的数据行数一致,只有三行。
那么在上面的SELECT语句中,我们能不能在不调整表顺序的情况下,让SQL Server先执行表[T_B]和[T_C]之间的INNER JOIN,再执行表[T_A]和[T_B]之间的LEFT JOIN呢,因为这样的话,由于最后执行的是表[T_A]的LEFT JOIN,所以我们就可以在查询结果中保留表[T_A]的所有数据。
答案是可以的,我们要给表[T_B]和[T_C]之间的INNER JOIN加上小括号:
SELECT * FROM [dbo].[T_A] LEFT JOIN ( [dbo].[T_B] INNER JOIN [dbo].[T_C] ON [T_B].ID_B=[T_C].ID_C ) ON [T_A].ID_A=[T_B].ID_B
执行结果:
由于现在我们给表[T_B]和[T_C]之间的INNER JOIN加上了小括号,所以SQL Server会先执行小括号内的INNER JOIN,再执行小括号外的LEFT JOIN,这样我们就在查询结果中保留了表[T_A]的所有数据。
内容总结
以上是互联网集市为您收集整理的SQL Server的JOIN是支持使用小括号修改运算顺序的全部内容,希望文章能够帮你解决SQL Server的JOIN是支持使用小括号修改运算顺序的所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。