Tsql 如何编写此T-SQL WHERE条件?
我有两张桌子:Tsql 如何编写此T-SQL WHERE条件?,tsql,Tsql,我有两张桌子: TableA Col1 Col2 TableB Col3 Col4 我想把他们联系在一起: SELECT * from TableA join TableB ON (...) 现在,我需要编写一个计算结果为: 如果Col3不为null,则为true iif Col1==Col3;否则 如果Col3为null,则为true iif Col2==Col4 最优雅的方式是什么 ON (Col1=Col3 OR (Col3 IS NULL AND Co
TableA
Col1
Col2
TableB
Col3
Col4
我想把他们联系在一起:
SELECT * from TableA join TableB ON (...)
现在,我需要编写一个计算结果为:
ON (Col1=Col3 OR (Col3 IS NULL AND Col2=Col4))
应该这样做(如果Col3为null,则Col1=Col3无法将evalutate转换为TRUE)
应该这样做(如果Col3为null,Col1=Col3不能求值为TRUE)尝试以下方法:
SELECT *
FROM TableA
JOIN TableB
ON Col1 = Col3
OR (Col3 IS NULL AND Col2 = Col4)
试试这个:
SELECT *
FROM TableA
JOIN TableB
ON Col1 = Col3
OR (Col3 IS NULL AND Col2 = Col4)
您的OR和条件可能会混淆。很好,谢谢!我认为应该有一种更简单的方法,而不仅仅是一堆嵌套很深的case-when语句!:)@伦道夫·波特——对我来说很有意义。我会在和的周围加上括号。兰多夫:在或之前。。。对一些人来说,这就像以前一样清楚;其他人更喜欢用括号来表示清楚。老实说,我永远记不清哪一个先到,但这个解决方案背后的想法非常清楚,因此没有必要澄清。:)您的OR和条件可能会混淆。很好,谢谢!我认为应该有一种更简单的方法,而不仅仅是一堆嵌套很深的case-when语句!:)@伦道夫·波特——对我来说很有意义。我会在和的周围加上括号。兰多夫:在或之前。。。对一些人来说,这就像以前一样清楚;其他人更喜欢用括号来表示清楚。老实说,我永远记不清哪一个先到,但这个解决方案背后的想法非常清楚,因此没有必要澄清。:)