Sql 如何使用“as”关键字在Oracle中为表添加别名?

Sql 如何使用“as”关键字在Oracle中为表添加别名?,sql,oracle,table-alias,Sql,Oracle,Table Alias,我正在尝试在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

我正在尝试在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)
);
感谢您提前提供的帮助。

您可以在许多SQL Server上使用AS作为表别名,至少在MsSQL、MySQL、PostrgreSQL上是这样,但它始终是可选的,在Oracle上是非法的

因此,请删除以下内容:

在Oracle中省略AS for表别名

SELECT G.Guest_ID, G.First_Name, G.Last_Name
FROM Guest G
  JOIN Stay S ON G.Guest_ID = S.Guest_ID
WHERE G.City = 'Miami' AND S.Room = '222';

这将为您提供无错误的输出。

我希望查询具有与MSSQL查询中相同的as关键字。@Marcos Oracle不是MSSQL在from子句中使用as的可能性不是标准的ANSI SQL。甲骨文不能因为微软没有遵守标准而受到指责。甲骨文的选择文档没有像以前一样显示t_别名;与比较,它清楚地显示了与以前一样的可选c_别名。因此,文档中确实说明允许使用列别名,但没有说明允许使用表别名;因此它不是。@DylanChen是的,用于列别名,而不是表别名。可能您来自SQL server的经验。与SQL server不同,在Oracle SQL中,要为表别名,只需使用别名,就像@dystroy回答的那样。@justCallMeBiru在大多数系统中可以使用AS,但它是可选的。表别名使用AS关键字不是ANSI SQL标准。
SELECT G.Guest_ID, G.First_Name, G.Last_Name
FROM Guest G
  JOIN Stay S ON G.Guest_ID = S.Guest_ID
WHERE G.City = 'Miami' AND S.Room = '222';