2014-05-17 12 views
0

例子我想創建一個視圖名稱TEST創建視圖,除了條件

,我已經是 視圖名稱之前創建一個視圖:客戶

內部的客戶視圖:

//CUSTOMER 
NAME  ID   ADDRESS  AGE  SEX  TELNO  EMAIL 
----------------------------------------------------------------------- 
CHRIS  1    12321312  21  F  646885 [email protected] 
JOHN  2    SADASDSA  23  M  5452131 [email protected] 
MAY  3    LKJLKJLKJ 32  F  645643 [email protected] 

所以我想創建一個視圖名稱TEST,它將存儲CUSTOMER中的所有列,但除了TELNO EMAIL外。

所以我用這個查詢:

CREATE VIEW TEST AS 
    SELECT * FROM CUSTOMER 
    EXCEPT 
    SELECT TELNO,EMAIL FROM CUSTOMER; 

但我無法工作,有錯誤報道出來。 SQL命令沒有正確結束並指向EXCEPT,出了什麼問題?

+0

難道你不只是發佈這個,並得到你的問題的答案?答案不會改變,因爲你刪除了上一個問題並轉貼。 (如果你不斷地這樣做,你會被系統自動禁止 - 刪除的帖子被考慮在內,所以請小心)。 – Ben

回答

2

你必須列出所有你想要明確的列:

CREATE VIEW TEST AS 
    SELECT NAME, ID, ADDRESS, AGE, SEX 
    FROM CUSTOMER; 

有沒有辦法從*列表中排除了一些列。

EXCEPT是SQL Server中的一個操作符。在Oracle中相當於MINUS。但是,這適用於行級別,而不是列級別。

如果你想獲得的所有列在表中,除了這兩個,你可以使用all_tab_columns

select column_name 
from all_tab_columns 
where lower(table_name) = 'customer' and 
     lower(column_name) not in ('telno', 'email'); 

然後,您可以將它們粘貼到select條款。

+0

當我按照第二個1.結果返回沒有行選擇 – user3553846

+0

這是視圖,而不是表。 – user3553846

+0

@ user35538​​46。 。 。只要把'創建視圖。 。 .'在'select'之前。 –