zoukankan      html  css  js  c++  java
  • 外部联接

    DECLARE @isExistsDb INT = object_id('tempdb.dbo.#user');
    IF @isExistsDb IS NULL
    BEGIN
    	CREATE TABLE #user(userId INT,name varchar(50));
    	INSERT INTO #user(userId,name) VALUES(1,'公司简称');	
    	
    	CREATE TABLE #user_info(userId INT,fullname varchar(100));
    END
    
    SELECT 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里正好有这样的记录,所以能得到结果。





  • 相关阅读:
    day3 集合
    进度条
    day3 文件操作 seek tell 修改
    day3 函数
    同学满分代码,购物车。
    day2杂---三元运算 is
    模块sys os
    day2--列表/元组/字符串/字典
    一、Git配置
    四、TestNG 批量执行脚本Runner.xml
  • 原文地址:https://www.cnblogs.com/leftfist/p/4258010.html
Copyright © 2011-2022 走看看