2010-08-23 110 views
5

這個SQL語句Where子句中的(+)是什麼意思?SQL中的(+)是什麼意思?

SELECT p.FIRSTNAME, 
     p.LASTNAME, 
     p.LOGINNAME, 
     a.DESCRIPTION, 
     a.PERIPHERALNUMBER, 
     a.SUPERVISORAGENT, 
     t.ENTERPRISENAME, 
     t.DIALEDNUMBERID, 
     sp.FIRSTNAME AS SUPER_FIRSTNAME, 
     sp.LASTNAME AS SUPER_LASTNAME, 
     sp.LOGINNAME AS SUPER_LOGINNAME, 
     sa.PERIPHERALNUMBER AS SUPER_PERIPHERALNUMBER, 
     sa.SUPERVISORAGENT AS SUPER_SUPERVISORAGENT, 
     a.SKILLTARGETID, 
     a.PERSONID, 
     t.AGENTTEAMID, 
     sa.SKILLTARGETID AS SUPER_SKILLTARGETID, 
     sa.PERSONID AS SUPER_PERSONID 
FROM C2O.AGENT a, 
     C2O.PERSON p, 
     C2O.AGENT_TEAM_MEMBER tm, 
     C2O.AGENT_TEAM t, 
     C2O.AGENT sa, 
     C2O.PERSON sp 
WHERE a.PERSONID = p.PERSONID 
AND  a.SKILLTARGETID = tm.SKILLTARGETID(+) 
AND  tm.AGENTTEAMID = t.AGENTTEAMID(+) 
AND  t.PRISUPERVISORSKILLTARGETID = sa.SKILLTARGETID(+) 
AND  sa.PERSONID = sp.PERSONID(+) 
AND  a.DELETED = 'N' 
AND  p.LOGINENABLED = 'Y' 
AND  SUBSTR(a.PERIPHERALNUMBER,2,3) = 580; 
+3

這是在運行什麼RDBMS? SQL Server?甲骨文? MySQL的?訪問? – Oded 2010-08-23 16:54:58

回答

6

在Oracle SQL中,這是已棄用的outer join operator

+0

它似乎也適用於DB2/iSeries;我在處理該服務器的舊查詢時也遇到過這種情況。 – 2013-05-02 05:37:30

2

在舊的Oracle版本中,這意味着一個OUTER JOIN。

1

它是一個外部聯接運算符在SQL Server這將是*==*

3

在Oracle中,(+)指定該聯接是外連接(而不是內部聯接,因爲這隱含連接語法通常暗示)。

使它成爲外部聯接意味着即使該特定項爲空,該行也應該包含在結果中。