创建除条件外的视图

时间:2014-05-17 13:58:21

标签: sql oracle

示例我想创建一个视图名称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,出了什么问题?

1 个答案:

答案 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子句中。