如何将这行代码更改为WHERE子句?

时间:2017-07-26 21:28:25

标签: 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_session_id = TO_CHAR(USERENV('SESSIONID'))

这不起作用。有谁知道怎么做?

感谢 - 你!

4 个答案:

答案 0 :(得分:2)

如果使用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子句中。

答案 1 :(得分:0)

您必须使用具有相同值的列(主要是键列)将表连接到另一个表

 LEFT OUTER JOIN lrmi_dba.rte_session_info si
   ON si.rte_session_id = another table's column
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'))

答案 2 :(得分:0)

也许您可以使用USING

LEFT OUTER JOIN lrmi_dba.rte_session_info si
  USING (rte_session_id)
WHERE si.rte_session_id = TO_CHAR(USERENV('SESSIONID'))

这假设您与lrmi_dba.rte_session_info加入的表格也有一个名为rte_session_id的列。

祝你好运。

答案 3 :(得分:0)

您可以尝试这样:

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'))