【问题标题】:Left Join Get non-matching recordsLeft Join 获取不匹配的记录
【发布时间】:2014-07-22 14:24:13
【问题描述】:

我正在两个表之间执行左连接。假设两个表都有 id、name 和 sal 等列,我需要获取匹配的记录和不匹配的记录。 jon 键在这里是 id。对于不匹配的记录,每行的 sal 列应替换为 90000、90001、90002 等。所以执行join操作后,我就能通过sal列识别出不匹配的记录。有人可以帮我查询吗? 谢谢

【问题讨论】:

  • 请告诉我们你到目前为止做了什么
  • 你试过什么?这是一个非常简单的左连接。也许您正在为奇怪的更换要求而苦苦挣扎?

标签: sql sql-server tsql


【解决方案1】:
select ta.id,ta.name,
coalesce(tb.sal,
   (row_number() over 
   (partition by tb.sal order by tb.id)) + 89999) sal 
from ta left join tb on ta.id = tb.id

【讨论】:

    【解决方案2】:
    select 
        ta.id, 
        ta.name, 
        ISNULL(tb.sal, ROW_NUMBER() over (partition by tb.sal order by ta.id) + 89999)
    from table_a ta
        left join table_b tb ON tb.id = ta.id
    order by ta.id
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-12
      • 2016-02-11
      • 2022-01-04
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 2016-08-27
      • 1970-01-01
      相关资源
      最近更新 更多