如何使用case子句修改连接子句;比如我想表加入另一列如果column1为空,如:SQL连接案例
SELECT * FROM MYTABLE
LEFT JOIN OTHERTABLE ON
CASE WHEN MYTABLE.A IS NULL THEN MYTABLE.B = OTHERTABLE.A
ELSE MYTABLE.A IS NOT NULL THEN MYTABLE.A = OTHERTABLE.A
(完全瞎编,遗憾的语法错误:))
如何使用case子句修改连接子句;比如我想表加入另一列如果column1为空,如:SQL连接案例
SELECT * FROM MYTABLE
LEFT JOIN OTHERTABLE ON
CASE WHEN MYTABLE.A IS NULL THEN MYTABLE.B = OTHERTABLE.A
ELSE MYTABLE.A IS NOT NULL THEN MYTABLE.A = OTHERTABLE.A
(完全瞎编,遗憾的语法错误:))
试试这个:
SELECT *
FROM MyTable M
LEFT JOIN OtherTable O ON(CASE WHEN M.A IS NULL THEN M.B ELSE M.A END) = O.A
SELECT * FROM MYTABLE
LEFT JOIN OTHERTABLE ON COALESCE(MYTABLE.A, MYTABLE.B) = OTHERTABLE.A
你的答案处理了具体的例子,但没有回答实际的问题 - 问题是关于将'CASE'语句合并到'JOIN'中 –
您可以使用isnull()或coalesce()来检查空值。
刚刚尝试下面的代码:
SELECT * FROM MYTABLE
LEFT JOIN OTHERTABLE ON OTHERTABLE.A = isnull(MYTABLE.A,MYTABLE.B)
是'IS NULL'测试一个你实际上是试图解决,或者仅仅是一个例子吗? - 从目前的答案可以看出,NULL根本不需要case语句。 –
实际上它可以是任何东西,因此它不是特定的。 – Sin5k4
CASE ... END语句总是返回一个值,您可以在连接或比较中使用该值。您不能在CASE语句中使用任何连接或其他条件。 – Arvo