2014-01-15 175 views
11

我試圖執行這個查詢Oracle SQL Developer中:如何使用'as'關鍵字在Oracle中爲表格添加別名?

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

感謝提前任何幫助。

+0

也許你來自SQL服務器的經驗。與SQL服務器不同的是,在Oracle SQL中,爲了使別名只需要使用別名就像@dystroy所回答的一樣。 –

+0

@justCallMeBiru在大多數系統中,你可以使用AS,但它是可選的。 –

+0

對錶別名使用「AS」關鍵字不是ANSI SQL標準。 –

回答

17

您可以在許多SQL服務器(至少MsSQL,MySQL,PostrgreSQL)上使用AS進行表別名,但它總是可選的,在Oracle上它是非法的。

所以刪除AS

SELECT G.Guest_ID, G.First_Name, G.Last_Name 
FROM Guest G 
+0

我希望查詢具有'as'關鍵字,就像我在MSSQL查詢中那樣。 – Marcos

+2

@Marcos Oracle不是MSSQL –

+0

Oracle具有'as'關鍵字。爲什麼我不能使用它? – Marcos

0

略去AS在Oracle表的別名。

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

這會給你輸出沒有錯誤。

相關問題