Sql 如何将这行代码更改为WHERE子句?
我在Oracle SQL中有以下代码行:Sql 如何将这行代码更改为WHERE子句?,sql,oracle,Sql,Oracle,我在Oracle SQL中有以下代码行: LEFT OUTER JOIN lrmi_dba.rte_session_info si ON si.rte_session_id = TO_CHAR(USERENV('SESSIONID')) 我想将这部分代码更改为WHERE子句,类似于: LEFT OUTER JOIN lrmi_dba.rte_session_info si ON si.rte_session_id WHERE si.rte_sessio
LEFT OUTER JOIN lrmi_dba.rte_session_info si
ON si.rte_session_id = TO_CHAR(USERENV('SESSIONID'))
我想将这部分代码更改为WHERE子句,类似于:
LEFT OUTER JOIN lrmi_dba.rte_session_info si
ON si.rte_session_id
WHERE si.rte_session_id = TO_CHAR(USERENV('SESSIONID'))
这是行不通的。有人知道怎么做吗
谢谢大家! 必须使用具有相同值的列(主要是键列)将表连接到另一个表 样品
FROM abcd.table1 t1
LEFT OUTER JOIN lrmi_dba.rte_session_info si
ON si.rte_session_id = t1.session_id
WHERE si.rte_session_id = TO_CHAR(USERENV('SESSIONID'))
必须使用具有相同值的列(主要是键列)将表连接到另一个表 样品
FROM abcd.table1 t1
LEFT OUTER JOIN lrmi_dba.rte_session_info si
ON si.rte_session_id = t1.session_id
WHERE si.rte_session_id = TO_CHAR(USERENV('SESSIONID'))
如果使用
WHERE
子句,则将外部联接转换为内部联接。因此,把它放在ON
子句中:
LEFT OUTER JOIN
lrmi_dba.rte_session_info si
ON si.rte_session_id AND
si.rte_session_id = TO_CHAR(USERENV('SESSIONID'))
代码就是这样开始的。将条件保留在
ON
子句中。如果使用WHERE
子句,则会将外部联接转换为内部联接。因此,把它放在ON
子句中:
LEFT OUTER JOIN
lrmi_dba.rte_session_info si
ON si.rte_session_id AND
si.rte_session_id = TO_CHAR(USERENV('SESSIONID'))
代码就是这样开始的。将该条件保留在
ON
子句中。也许您可以使用使用
:
LEFT OUTER JOIN lrmi_dba.rte_session_info si
USING (rte_session_id)
WHERE si.rte_session_id = TO_CHAR(USERENV('SESSIONID'))
这假定您要加入的表lrmi\u dba.rte\u session\u info
也有一个名为rte\u session\u id
的列
祝你好运。也许你可以使用
使用:
LEFT OUTER JOIN lrmi_dba.rte_session_info si
USING (rte_session_id)
WHERE si.rte_session_id = TO_CHAR(USERENV('SESSIONID'))
这假定您要加入的表lrmi\u dba.rte\u session\u info
也有一个名为rte\u session\u id
的列
祝你好运。你可以这样尝试:
LEFT OUTER JOIN lrmi_dba.rte_session_info si
ON si.rte_session_id = si.rte_session_id WHERE si.rte_session_id = TO_CHAR(USERENV('SESSIONID'))
您可以这样尝试:
LEFT OUTER JOIN lrmi_dba.rte_session_info si
ON si.rte_session_id = si.rte_session_id WHERE si.rte_session_id = TO_CHAR(USERENV('SESSIONID'))
您可以使用:“LEFT OUTER JOIN lrmi_dba.rte_session_info si ON 1=1,其中si.rte_session_id=TO_CHAR(USERENV('SESSIONID'))”。但是为什么呢?您在ON
子句中写入的过滤条件将从左表中获取所有
结果,并且仅从lrmi_dba.rte_session_info
表中获取匹配结果,而该表又与传递的session_id
匹配。但是,当您说要将条件移动到where子句时,这意味着首先从rte_session_id
相等的两个表中获取所有结果,然后最后仅获取传递的session_id匹配的结果。。具体要求是什么..简而言之,这些查询是不同的,因为NULL
。有效地左外连接lrmi_dba.rte_session_info si。。其中si.rte_session_id=..
是一个内部联接。我不确定您将联接子句放在WHERE子句中的意图是什么(尽管您目前的查询实际上并不是按照
上的的意图将两个表“联接”在一起),但这个问题可能是一个有趣的阅读:您可以使用:“左外连接lrmi_dba.rte_session_info si ON 1=1,其中si.rte_session_id=TO_CHAR(USERENV('SESSIONID'))“。但是为什么呢?您在
子句的中写入的筛选条件将从左表中获取所有
结果,并且仅从lrmi_dba.rte_session_info
表中获取匹配结果,而该表又与传递的session_id
相匹配。”。但是,当您说要将条件移动到where子句时,这意味着首先从rte_session_id
相等的两个表中获取所有结果,然后最后仅获取传递的session_id匹配的结果。。具体要求是什么..简而言之,这些查询是不同的,因为NULL
。有效地左外连接lrmi_dba.rte_session_info si。。其中si.rte_session_id=..
是一个内部联接。我不确定您将联接子句放在WHERE子句中的意图是什么(尽管您目前的查询实际上并不是按照
上的的意图将两个表“联接”在一起),但这个问题可能是一个有趣的阅读: