示例我想创建一个视图名称TEST
我之前已经创建了一个视图 查看名称:客户
内部客户视图:
//CUSTOMER
NAME ID ADDRESS AGE SEX TELNO EMAIL
-----------------------------------------------------------------------
CHRIS 1 12321312 21 F 646885 ascs@gmail
JOHN 2 SADASDSA 23 M 5452131 asd@gmail
MAY 3 LKJLKJLKJ 32 F 645643 cxz@gmail
所以我想创建一个视图名称TEST,它将把所有列存储在CUSTOMER中但是除了TELNO EMAIL。
所以我使用了这个查询:
CREATE VIEW TEST AS
SELECT * FROM CUSTOMER
EXCEPT
SELECT TELNO,EMAIL FROM CUSTOMER;
但是我没有工作,错误就出来了。 SQL命令没有正确结束并指向EXCEPT,出了什么问题?
答案 0 :(得分: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
子句中。