我正在尝试从表中创建一个没有任何唯一键或主键的视图。我试图使用以下sql statment
,但它给出了错误
#let presume the table name is foo
SELECT rownum, * from (SELECT * from foo)
#error
#ORA-00936: missing expression
#00936. 00000 - "missing expression"
我是否缺少任何东西或需要制作
答案 0 :(得分:2)
如果您提供了别名
,则会运行您的查询select rownum,
a.*
from (select *
from foo) a
当然,正如所写,您可以将查询简化为
select rownum,
foo.*
from foo
但我假设您的子查询中还有其他内容,这使得首先使用子查询变得合理。
退一步说,我不确定你的查询是否能达到你想要的效果,即使你已经开始工作了。使用rownum
分配伪密钥不太可能非常有用。除非您的子查询具有生成唯一订单的order by
子句,并且您可以保证永远不会插入比某些现有行更早排序的行,这似乎不太可能,所以rownum
分配给特定行可能会从查询的运行更改为运行。没有唯一且持久地识别一行数据的“密钥”是一件毫无意义的事情。但是,即使您可以保证这些内容,也不能使用rownum
进行更新,如果您尝试向视图添加谓词,则可能无法获得所需的结果。