Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 不同联接查询_Sql - Fatal编程技术网

Sql 不同联接查询

Sql 不同联接查询,sql,Sql,可能是个愚蠢的问题,但却把我难住了。比较两个表并只返回不同的列 SELECT DISTINCT(DM.CLIENT_CODE) FROM DBO.DM_CLIENT DM LEFT JOIN DBO.STG_DM_CLIENT STG ON STG.CLIENT_CODE = DM.CLIENT_CODE 查询的目的是只返回DM表中的新客户机_代码(或STG表中未列出的客户机_代码) 我认为这会起作用,但事实并非如此 然后,是否可以在案例查询中使

可能是个愚蠢的问题,但却把我难住了。比较两个表并只返回不同的列

        SELECT DISTINCT(DM.CLIENT_CODE) FROM DBO.DM_CLIENT DM
        LEFT JOIN DBO.STG_DM_CLIENT STG
        ON STG.CLIENT_CODE = DM.CLIENT_CODE
查询的目的是只返回DM表中的新客户机_代码(或STG表中未列出的客户机_代码)

我认为这会起作用,但事实并非如此

然后,是否可以在案例查询中使用此查询来验证是否存在新代码,然后将resultset设置为“a”

       select  case 
            when (SELECT DBO.DM_CLIENT.Client_Code  
            FROM DBO.DM_CLIENT DM  
            LEFT JOIN DBO.STG_DM_CLIENT STG    
          ON STG.Client_Code= DM.Client_Code  
            WHERE STG.Client_Code IS NULL  
          GROUP BY  DM.Client_Code) then 'A'
       end

       from  DBO.DM_CLIENT.Client_Code, DBO.STG_DM_CLIENT.Client_Code

如何使该语句成为条件语句?

您需要更改查询以排除连接失败的记录

SELECT
    DISTINCT(DM.CLIENT_CODE)
FROM
    DBO.DM_CLIENT AS DM
    LEFT OUTER JOIN DBO.STG_DM_CLIENT AS STG ON
        STG.CLIENT_CODE = DM.CLIENT_CODE
WHERE
    STG.CLIENT_CODE IS NULL

实际上,该查询返回所有客户机代码

试试这个

 SELECT DISTINCT(DM.CLIENT_CODE) FROM DBO.DM_CLIENT DM
     WHERE NOT EXISTS (
        SELECT * FROM DBO.STG_DM_CLIENT STG
        WHERE STG.CLIENT_CODE = DM.CLIENT_CODE
     );

建议的查询在效率上比这个查询更好。

听起来您想从DM返回STG中不存在的查询

 SELECT DM.Client_Code
 FROM DBO.DM_CLIENT As DM
 LEFT JOIN DBO.STG_DM_CLIENT As STG 
   ON STG.Client_Code= DM.Client_Code
 WHERE STG.Client_Code IS NULL
 GROUP BY  DM.Client_Code;
尝试以下任一方法:

select distinct dm.client_code
from dbo.dm_client dm
left join dbo.stg_dm_client stg on stg.client_code = dm.client_code
where stg.client_code is null
或:


如果您正在使用Oracle,请将
更改为

您可以通过不同的方式执行此操作:

不在中使用

SELECT *
FROM DM_CLIENT
WHERE client_code NOT IN (
    SELECT client_code
    FROM STG_DM_CLIENT 
)
SELECT dm.* 
FROM DM_CLIENT DM
LEFT JOIN STG_DM_CLIENT STG
     ON STG.CLIENT_CODE = DM.CLIENT_CODE
WHERE stg.client_code is null
使用存在的文件

SELECT *
FROM DM_CLIENT dm
WHERE NOT EXISTS (
    SELECT client_code
    FROM STG_DM_CLIENT
    WHERE client_code=dm.client_code
)
使用左连接或右连接

SELECT *
FROM DM_CLIENT
WHERE client_code NOT IN (
    SELECT client_code
    FROM STG_DM_CLIENT 
)
SELECT dm.* 
FROM DM_CLIENT DM
LEFT JOIN STG_DM_CLIENT STG
     ON STG.CLIENT_CODE = DM.CLIENT_CODE
WHERE stg.client_code is null

在您可以使用的SQL Server 2005或更新版本中,或

否,查询将返回所有DM.CLIENT\u代码值,无论它们是否在STG中。@LarryLustig已修复,谢谢。我不知道我在想什么。