【问题标题】:T-SQL and Joins with where conditions [duplicate]T-SQL 和连接条件 [重复]
【发布时间】:2021-06-30 13:02:03
【问题描述】:

如果我有多个左连接语句并且我必须应用where 等条件x="string1",我如何将它们应用到单个左连接语句?

更多类似的情况?

SELECT 
W.[ABC],
A.[XYZ]

FROM BLAH1 B0

LEFT JOIN WebUnion W ON B0.ID=W.ID
LEFT JOIN AppUnion A ON B0.ID=A.ID

WHERE WBC is null
AND
WHERE WBC is not null

【问题讨论】:

  • 把子句放在ON而不是WHERE?您还没有限定您的列WBC,所以我们不知道它与哪个表相关。此外,单个查询范围只能有一个WHEREAND WHERE 会导致语法错误。
  • 虽然,定义你想要的行,其中WBC 具有NULL NOT NULL 值是没有意义的。一个值永远不会同时是NULLNOT NULL;根据定义,它们是完全相反的。如果一个值为NULL,则定义为not NOT NULL,同样的值为NOT NULL,定义为not NULL。跨度>

标签: sql-server tsql join left-join


【解决方案1】:

由于您的查询有一些错误,我一般都会写示例

  Select A.*,B.* from
  (SELECT * FROM t1 where t1.f1="xxx" and ...) as A
  LEFT JOIN
  (SELECT * FROM t2 where t1.f2="yyy" and ...) as B
  ON A.id = b.fid

  Select t1.*,t2.* from
  t1
  LEFT JOIN
  t2
  ON t1.id = t2.fid and t1.f1="xxx" and t1.f2="yyy"

【讨论】:

    【解决方案2】:
    SELECT 
    W.[ABC],
    A.[XYZ]
    
    FROM BLAH1 B0
    
    LEFT JOIN 
    (SELECT * FROM WebUnion WHERE WBC IS NULL) W ON B0.ID=W.ID
    LEFT JOIN 
    (SELECT * FROM AppUnion WHERE WBC IS NOT NULL) A ON B0.ID=A.ID
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-25
      • 2013-03-16
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      • 2011-12-11
      • 2011-10-23
      • 2014-02-12
      相关资源
      最近更新 更多