SQL查询入门(中篇) (二)
(我用的代码高亮插件不支持中文,所以上面where子句后面第一个字符串是’谈论项目进度’,第二个是’讨论职业发展’)
恩,恭喜你,答错了…如果这样写将会什么数据也得不到.正确的写法是使用自连接!
自连接的是一种特殊的连接,是对物理上相同但逻辑上不相同的表进行连接的方式。我看到百度百科上说自连接是一种特殊的内连接,但这是错误的,因为两个相同表之间不光可以内连接,还可以外连接,交叉连接…在进行自连接时,必须为其中至少一个表指定别名以对这两个表进行区分!
回到上面的例子,使用自连接,则正确的写法为:
SELECT m.EmployeeName FROM [fordemo].[dbo].[MeettingRecord] m, [fordemo].[dbo].[MeettingRecord] m2 where m.MeetingName='¨ ¨¨' and m2.MeetingName='¨ ¨° ¤ é 1' and m.EmployeeName=m2.EmployeeName
(关于乱码问题,请参考上面)
多表连接
多个表连接实际上可以看成是对N个表进行n-1次双表连接.这样理解会让问题简单很多!
比如上面三个表,前两个表是我们已经在文章开始认识的,假设现在又添加了一个教师表,对这三个表进行笛卡尔积如下:
SELECT * FROM [fordemo].[dbo].[Class] cross join [fordemo].[dbo].[Teacher] cross join [fordemo].[dbo].[Student]
结果可以如图表示:
总结
文中对SQL中各种连接查询方式都做了简单的介绍,并利用一些Demo实际探讨各种连接的用处,掌握好各种连接的原理是写好SQL查询所必不可少的!
作者 CareySon



