我正在进行全外连接,但"ORA-00904: "TABLE2"."PID": invalid identifier"
不确定我在这里做错了什么。
见Sqlfiddle: http://sqlfiddle.com/#!4/b6883/12
答案 0 :(得分:1)
由于您在创建表时使用了带引号的标识符,因此所有列都是以小写形式创建的
CREATE TABLE Table1
("pid" int, "seqno" int, "thing1" int)
因此您还需要在select语句中使用带引号的标识符
SELECT COALESCE(Table1."pid",Table2."pid") as pid,
COALESCE(Table1."seqno", Table2."seqno") as seqno,
Table1."thing1",
Table2."thing2"
FROM Table1 FULL OUTER JOIN Table2 ON Table1."pid" = Table2."pid";
答案 1 :(得分:1)
不要将列名括在引号中。如果您使用双引号,则告诉Oracle在查询中使用确切的大小写。如果您在查询中不使用相同的案例,则会失败。
见这里:http://sqlfiddle.com/#!4/0af94/1/2
你DML应该是:
CREATE TABLE Table1(pid int, seqno int, thing1 int);
INSERT ALL
INTO Table1 (pid, seqno, thing1)
VALUES (1, 1, 300)
INTO Table1 (pid, seqno, thing1)
VALUES (2, 1, 400)
SELECT * FROM dual;
CREATE TABLE Table2 (pid int, seqno int, thing2 varchar2(1));
INSERT ALL
INTO Table2 (pid, seqno, thing2)
VALUES (1, 1, 'a')
INTO Table2 (pid, seqno, thing2)
VALUES (1, 2, 'b')
INTO Table2 (pid, seqno, thing2)
VALUES (3, 2, 'z')
SELECT * FROM dual;