我有以下查询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