【问题标题】:How to write this T-SQL WHERE condition?如何编写这个 T-SQL WHERE 条件?
【发布时间】:2009-11-16 21:44:42
【问题描述】:

我有两张桌子:

TableA
    Col1
    Col2
TableB
    Col3
    Col4

我想加入他们:

SELECT * from TableA join TableB ON (...)

现在,代替...,我需要编写一个表达式,计算结果为:

  1. 如果 Col3 不为空,则 iif Col1==Col3 为真;否则
  2. 如果 Col3 为空,则 iif Col2==Col4 为真

最优雅的方法是什么?

【问题讨论】:

    标签: tsql


    【解决方案1】:
    ON (Col1=Col3 OR (Col3 IS NULL AND Col2=Col4))
    

    应该可以解决问题(如果 Col3 为空,Col1=Col3 无法评估为 TRUE)

    【讨论】:

    • 您的 OR 和 AND 条件可能令人困惑。
    • 很好,谢谢!我认为应该有一种比一堆深度嵌套的 case-when 语句更简单的方法! :)
    • @Randolph Potter - 对我来说很有意义。我将在 AND 条件周围添加括号。
    • Randoph: AND before OR... 对于某些人来说,就像 * before +;为了清楚起见,其他人更喜欢括号。
    • 老实说,我不记得哪个先出现,但这个解决方案背后的想法是如此清晰,无需澄清。 :)
    【解决方案2】:

    试试这个:

    SELECT * 
    FROM TableA 
    JOIN TableB 
       ON Col1 = Col3
          OR (Col3 IS NULL AND Col2 = Col4)
    

    【讨论】:

      猜你喜欢
      • 2010-12-23
      • 1970-01-01
      • 2011-05-28
      • 2017-12-19
      • 2021-12-14
      • 1970-01-01
      • 2014-02-01
      • 2011-05-28
      • 2017-05-07
      相关资源
      最近更新 更多