【问题标题】:sql server left join and where not exist to compare record between two tables in two different databasessql server left join and where not exist 比较两个不同数据库中两个表之间的记录
【发布时间】:2016-03-11 02:17:34
【问题描述】:

我已经编写了一个 sql server 脚本,它将执行以下操作

  1. 根据两个字段从数据库1中的一个表1中选择记录

    select * from table1FromDB1 where ID = 5 and TYPE = "TeST"

  2. 我需要在另一个不同的表(如 Table2)上在 DB2 等不同的数据库中执行逻辑

如果Table1中选择的记录存在于Table2中,则取Table2中的记录,否则如果Table1中的记录在table2中不存在,则使用table1中的记录

我不擅长左连接或不存在的地方,但有人告诉我这是怎么做的。

这是我的第一次尝试

select * from table1 t1
left join db2.table2 as t2 on t1.id = t2.id and t1.type = t2.type 
where not exists  (???) 
where ID = 5 and TYPE = "Test" 

感谢任何帮助。谢谢。

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    使用 LEFT JOIN,您将从表 1 中获取所有记录,而表 2 中未通过 ON 条件匹配的值将返回 NULL 值。在您的示例中,当我们看到表 2 中的 NULL 值时,我们希望使用表 1 中的值。SQL Server 具有 ISNULL() 可以完成此操作。 ISNULL() 将检查列表中的第一个值是否为空,如果为空,则返回列表中的第二个值。如果第一个值不为空,它将使用第一个值。对于超过 2 个值,请考虑 COALESCE()。

    SELECT ISNULL(t2.yourvalue, t1.yourvalue)
    FROM table1 t1
    LEFT JOIN table2 t2
    ON t1.id = t2.id 
    AND t1.type = t2.type
    

    【讨论】:

      猜你喜欢
      • 2011-11-28
      • 1970-01-01
      • 2022-01-23
      • 2015-10-21
      • 2013-07-18
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多