【问题标题】:How to get multiple repeated using Joins?如何使用 Joins 获得多个重复?
【发布时间】:2014-03-01 01:17:16
【问题描述】:

我有一个结构如下的临时表:

 StudentID  VALUE
   1          5
   2          NULL

并需要将其中的值映射到下表:

 StudentID  DEPT
    1        1
    1        2
    2        3 
    2        4

所以输出应该是这样的:

StudentID  DEPT VALUE
  1        1     5
  1        2     5
  2        3     NULL
  2        4     NULL

我需要使用连接或合并我的表包含百万条记录吗? 我尝试过使用连接,但没有得到我需要的确切信息?

【问题讨论】:

  • 这可以通过简单的内部连接来实现。您能否发布您尝试检查的内容是否正确?

标签: sql-server tsql join merge sql-server-2012


【解决方案1】:

加入。像这样:

SELECT S.StudentId, S.Dept, V.Value
FROM Student AS S
JOIN #TEMP AS V
  ON V.StudentId = S.StudentId
ORDER BY V.StudentId

【讨论】:

    【解决方案2】:
    SELECT table2.StudentID
          ,table2.DEPT
          ,#TEMP.Value
    FROM table2
    LEFT JOIN #TEMP
        ON table2.StudentID = #TEMP.StudentID
    

    【讨论】:

    • LEFT JOIN 不是必需的,他的#TEMP 应该为所有学生设置一行,示例显示了这一点,他从未提到需要这样做。
    • 他没有直接说明临时表将包含所有学生 ID,并且查询将给出相同的结果。无需投票
    • 所以你回答了这个问题。您的回答使它看起来像 LEFT JOIN 是必要的,但事实并非如此。除非 OP 指定然后根据 FACTS 回答他的问题是您的答案应该做的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 2011-03-21
    • 2022-01-03
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    相关资源
    最近更新 更多