19

我正在尝试在 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)
);

感谢您提前提供任何帮助。

4

2 回答 2

32

您可以AS在许多 SQL 服务器(至少是 MsSQL、MySQL、PostrgreSQL)上使用表别名,但它始终是可选的,并且在 Oracle 上是非法的。

所以删除AS

SELECT G.Guest_ID, G.First_Name, G.Last_Name
FROM Guest G
于 2014-01-15T18:08:40.800 回答
0

在 Oracle 中省略ASfor 表别名。

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';

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

于 2018-01-02T08:01:31.037 回答