SQL在分支条件下联接表

SQL在分支条件下联接表,sql,oracle11g,Sql,Oracle11g,我正在尝试“扭曲”执行SQL连接,如下所示: SELECT * FROM a JOIN b ON /* a.type == 'any' ? b.id IS NULL : b.id = a.id */ 注释是用类似C的语法编写的。如何用SQL表达我想要的内容?(最好是ANSI,但特定于Oracle数据库也可以。)选择* 从 在(a.type='any'和b.id为NULL)上加入b 或(a.键入“any”和b.id=a.id) 选择* 从 在(a.type='any'和b.id为NULL)上加入

我正在尝试“扭曲”执行SQL连接,如下所示:

SELECT *
FROM a
JOIN b ON /* a.type == 'any' ? b.id IS NULL : b.id = a.id */
注释是用类似C的语法编写的。如何用SQL表达我想要的内容?(最好是ANSI,但特定于Oracle数据库也可以。)

选择*
从
在(a.type='any'和b.id为NULL)上加入b
或(a.键入“any”和b.id=a.id)
选择*
从
在(a.type='any'和b.id为NULL)上加入b
或(a.键入“any”和b.id=a.id)
选择*
从
在(a.type='any'和b.id为NULL)上加入b
或(a.键入“any”和b.id=a.id)
选择*
从
在(a.type='any'和b.id为NULL)上加入b
或(a.键入“any”和b.id=a.id)

不熟悉oracle,我不知道你想做什么,但你的意思是:
在(a.type='any'和b.id为null)或(a.id=b.id)
@gordatron:是的,这在我的情况下也有效,但它依赖于我在问题中没有具体说明的某些附加假设。所以,这对我来说是可行的,但不是一个通用的答案;)不熟悉oracle,我也不知道你想做什么,但你的意思是:
ON(a.type='any',b.id为null)或(a.id=b.id)
@gordatron:是的,这在我的情况下也有效,但它依赖于我在问题中没有具体说明的某些附加假设。所以,这对我来说是可行的,但不是一个通用的答案;)不熟悉oracle,我也不知道你想做什么,但你的意思是:
ON(a.type='any',b.id为null)或(a.id=b.id)
@gordatron:是的,这在我的情况下也有效,但它依赖于我在问题中没有具体说明的某些附加假设。所以,这对我来说是可行的,但不是一个通用的答案;)不熟悉oracle,我也不知道你想做什么,但你的意思是:
ON(a.type='any',b.id为null)或(a.id=b.id)
@gordatron:是的,这在我的情况下也有效,但它依赖于我在问题中没有具体说明的某些附加假设。所以,这对我来说是可行的,但不是一个通用的答案;)
SELECT *
FROM a
JOIN b ON (a.type  = 'any' AND b.id IS NULL) 
       OR (a.type <> 'any' AND b.id = a.id)