外部联接

网友投稿 263 2022-09-14

外部联接

DECLARE @isExistsDb INT = object_id('tempdb.dbo.#user');IF @isExistsDb IS NULLBEGIN CREATE TABLE #user(userId INT,name varchar(50)); INSERT INTO #user(userId,name) VALUES(1,'公司简称'); CREATE TABLE #user_info(userId INT,fullname varchar(100));ENDSELECT ui.userId,ISNULL(ui.fullname,u.name) AS fullname FROM #user_info ui RIGHT JOIN #user u ON ui.userId=u.userId WHERE ui.userId = 1; SELECT ui.userId,ISNULL(ui.fullname,u.name) AS fullname FROM #user_info ui RIGHT JOIN #user u ON ui.userId=u.userId WHERE u.userId = 1;

结果如下

为什么第一条SQL 语句没有结果,而第二条却有?不是用了right join了吗?

关键在于条件语句。

第一条SQL语句的过滤条件是:ui.UserId=1,因为表#User_Info (ui) 里面根本没有userId=1这么一条记录,所以根本没有记录集可以供外联接,因此一条记录也没有。

而第二条是 u.UserId=1,表#user里正好有这样的记录,所以能得到结果。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:首钢“双杀”天津再取三连胜,战上海雅尼斯不敢轻敌!
下一篇:秋色园QBlog技术原理解析:开篇:整体认识(一)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~