我有以下查詢SELECT * FROM表A,tableB的WHERE條件[+]
SELECT *
FROM tableA, tableB
WHERE Conditions [+]
這是什麼關鍵字條件[+]代表? 這個查詢如何表現爲外連接?
我有以下查詢SELECT * FROM表A,tableB的WHERE條件[+]
SELECT *
FROM tableA, tableB
WHERE Conditions [+]
這是什麼關鍵字條件[+]代表? 這個查詢如何表現爲外連接?
這就是老甲骨文加入的語法。
SELECT *
FROM tableA, tableB
WHERE Conditions [+] -- this should be tableA (+) = tableB
的+
符號的定位表示JOIN
語法。
如果您查詢的是:
SELECT *
FROM tableA, tableB
WHERE tableA.id (+) = tableB.Id
然後,它會呈現出RIGHT OUTER JOIN
所以相當於是:
SELECT *
FROM tableA
RIGHT OUTER JOIN tableB
ON tableB.id = tableA.Id
如果+
標誌是對對方那麼這將是一個LEFT OUTER JOIN
SELECT *
FROM tableA, tableB
WHERE tableA.id = tableB.Id (+)
相當於
SELECT *
FROM tableA
LEFT OUTER JOIN tableB
ON tableA.id = tableB.Id
雖然我會建議使用標準連接語法。
如果不指定+
標誌那麼它會被解釋爲INNER JOIN
SELECT *
FROM tableA, tableB
WHERE tableA = tableB
這相當於是:
SELECT *
FROM tableA
INNER JOIN tableB
ON tableA.id = tableB.id
一個FULL OUTER JOIN
將使用兩個SELECT
語句和UNION
寫:
SELECT *
FROM tableA, tableB
WHERE tableA.id = tableB.Id (+)
UNION
SELECT *
FROM tableA, tableB
WHERE tableA.id (+) = tableB.Id
這相當於是:
SELECT *
FROM tableA
FULL OUTER JOIN tableB
ON tableA.id = tableB.id
下面是解釋了很多這些教程:
「條件」在這裏只是意味着你使用過濾所有這些數據是什麼。
喜歡這裏有一個例子:
SELECT *
FROM tableA, tableB
WHERE Name like '%Bob%'
都將返回一個具有「鮑勃」內任何地方的名字。
關於外連接,實際上你會使用在FROM子句:
所以也許
SELECT *
FROM tableA ta
OUTER JOIN tableB tb
ON ta.name = tb.name
WHERE ta.age <> 10
而且這裏哪裏是可選的,順便
感謝您的信息。但我想知道它的行爲如何, 左外連接,或 右外連接或 完全外連接?或 – wali 2012-08-17 15:43:08
並不重要這是如何表現的。
select *
from tableA left outer join
tableB
on . . .
的「(+)」的語法被甲骨文標準語法出臺之前,它是非常過時的:對於外連接,您應該使用標準的語法。
我不想只是複製粘貼&的答案,但這樣的事情可以found pretty easily,如果你做了一些搜索...
的外部聯接返回行的一個表,即使有沒有 匹配另一行中的行。您指定 在甲骨文外連接將在後面的括號從 可選表中的列名的加號(+),您的WHERE子句。例如:
SELECT ut.table_name, uc.constraint_name FROM user_tables ut, user_constraints uc WHERE ut.table_name = uc.table_name(+);
uc.table_name之後的(+)使得user_constraint表可選。 查詢返回的所有表,在沒有相應的約束 記錄,甲骨文在約束名稱 列提供了一個空。
我試過,但無法找到任何這樣的關鍵字[+]。感謝您的支持。 – wali 2012-08-17 15:56:22
您發佈的查詢似乎沒有什麼意義。鑑於你對「外連接」的引用,你可能是指'WHERE tableA.col1 = tableB.col1(+)'? – 2012-08-17 15:41:25
我使用標準SQL從事MS-SQL工作。我從來沒有見過這種語法。這只是外連接的例子。我想知道它如何寫在標準的SQL。 – wali 2012-08-17 15:49:02