【发布时间】:2015-08-03 21:49:14
【问题描述】:
我知道在 oracle (+) 中表示左/右外连接 但是如果它用于列名呢?
例如:
SELECT count(DISTINCT emp_id) FROM
employee e, salary s, name n,
department d, paid p, account a,
account_type at
WHERE
e.emp_id = n.emp_id AND
n.sal_id = s.sal_id AND
e.dep_id = d.dep_id AND
a.acc_id = at.acc_id AND
e.acc_type = at.acc_type AND
p.paid_id = a.paid_id(+) AND
at.acc_type(+) = 'Basic';
行数:1089
如果我删除了 account_type 上的 (+)
SELECT count(DISTINCT emp_id) FROM
employee e, salary s, name n,
department d, paid p, account a,
account_type at
WHERE
e.emp_id = n.emp_id AND
n.sal_id = s.sal_id AND
e.dep_id = d.dep_id AND
a.acc_id = at.acc_id AND
e.acc_type = at.acc_type AND
p.paid_id = a.paid_id(+) AND
at.acc_type = 'Basic';
行数:189
at.acc_type(+) = 'Basic'; <- This throws error if I run it on other sql other than oracle
这是否意味着左外连接与整个表有关? 如果我不使用 oracle,那么它会抛出错误,因为不允许 account_type 旁边的第二个查询中的 (+)。我应该如何修改语法以便第一个查询和第二个查询返回相同的结果?
【问题讨论】:
标签: sql oracle outer-join