如何使用'as'关键字为Oracle中的表别名?

我正在尝试在Oracle SQL Developer中执行此查询:


SELECT G.Guest_ID, G.First_Name, G.Last_Name

FROM Guest AS G

  JOIN Stay AS S ON G.Guest_ID = S.Guest_ID

WHERE G.City = 'Miami' AND S.Room = '222';

但是,我收到以下错误:


ORA-00933: SQL command not properly ended

00933. 00000 - "SQL command not properly ended"

*Cause:

*Action:

Error at Line: 2 Column: 12

我在第2行看不到任何问题,错误不是很具描述性。它似乎与as关键字有关。如果我删除它,它工作正常。但是,我希望我的查询非常详细。因此,我必须找到一种方法来解决问题,而无需删除as关键字。


这是涉及的表的结构:


CREATE TABLE GUEST

(

  GUEST_ID       NUMBER               NOT NULL,

  LAST_NAME      VARCHAR2(50 BYTE),

  FIRST_NAME     VARCHAR2(50 BYTE),

  CITY           VARCHAR2(50 BYTE),

  LOYALTY_NUMBER VARCHAR2(10 BYTE)    

);


CREATE TABLE STAY

(

  STAY_ID        NUMBER                         NOT NULL,

  GUEST_ID       NUMBER                         NOT NULL,

  HOTEL_ID       NUMBER                         NOT NULL,

  START_DATE     DATE,

  NUMBER_DAYS    NUMBER, 

  ROOM           VARCHAR2(10 BYTE)

);

在此先感谢您的帮助。


慕田峪4524236
浏览 1376回答 2
2回答

一只甜甜圈

您可以AS在许多SQL服务器(至少是MsSQL,MySQL,PostrgreSQL)上使用表别名,但它始终是可选的,在Oracle上它是非法的。所以删除AS:SELECT G.Guest_ID, G.First_Name, G.Last_NameFROM Guest G

慕尼黑5688855

AS在Oracle中省略for表别名。SELECT G.Guest_ID, G.First_Name, G.Last_NameFROM Guest G  JOIN Stay S ON G.Guest_ID = S.Guest_IDWHERE G.City = 'Miami' AND S.Room = '222';这将为您输出没有错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL
Oracle