gpt4 book ai didi

oracle - 内连接切换到外连接,标识符无效

转载 作者:行者123 更新时间:2023-12-01 16:43:53 24 4
gpt4 key购买 nike

所以我正在玩一些连接查询,我注意到一些不寻常的行为,当我将查询从内部连接切换到外部连接,并保持其他所有内容相同时,我收到一个错误,下面是两个正在运行的查询。

SELECT Staff.Fname AS "First Name", Staff.Lname AS "Second Name", Booking_ID
FROM Staff INNER JOIN Booking ON Staff.StaffID = Booking.StaffID;

A screenshot of an SQL Query returning successfully

然后当我切换它时,

SELECT Staff.Fname AS "First Name", Staff.Lname AS "Second Name", Booking_ID
FROM Staff OUTER JOIN Booking ON Staff.StaffID = Booking.StaffID;

我收到错误 ORA-00904 无效标识符“Staff”.“StaffID”

我认为上述查询应该返回所有已预订的员工以及预订 ID,以及所有尚未预订的员工。

有什么想法吗?

最佳答案

问题是您需要声明LEFT OUTER JOIN(或FULL或RIGHT)而不是OUTER JOIN。 Oracle 将 SQL 中的 OUTER 视为表别名。也就是说,它将其读作:

SELECT Staff.Fname AS "First Name", Staff.Lname AS "Second Name", Booking_ID
FROM Staff foo
JOIN Booking ON Staff.StaffID = Booking.StaffID;

虽然看起来很奇怪,但这确实有效:

SELECT OUTER.Fname AS "First Name", OUTER.Lname AS "Second Name", Booking_ID
FROM Staff OUTER JOIN Booking ON OUTER.StaffID = Booking.StaffID;

Oracle 会将其视为 STAFF 表(别名为 OUTER)和 BOOKING 之间的简单内部联接。

本质上,OUTER 是一个关键字,但不是 Oracle 中的保留字。也就是说,它具有特殊含义,但仍然可以用作别名。

关于oracle - 内连接切换到外连接,标识符无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23251691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com