ORA-00998:必须使用列别名命名此表达式

mel*_*sa 3 sql oracle

我知道我应该在所有列中添加别名而我正在这样做但我仍然会收到错误.

CREATE TABLE MENTIONS AS SELECT
    UM.USER_ID AS U_ID,
    UM.SCREEN_NAME AS USER_SCREEN_NAME,
    UM.MENTION_ID AS M_USER_ID,
    (
        SELECT
            UI.USER_SCREEN_NAME AS MENTIONED_USER
        FROM
            USER_INFO UI
        WHERE
            UI.USER_ID = UM.MENTION_ID
        AND ROWNUM = 1
    )
FROM
    USER_MENTION UM
Run Code Online (Sandbox Code Playgroud)

USER_MENTION表

 USER_ID       SCREEN_NAME    MENTION_ID
135846337   irisschrijft     774759032636727300
50117969    Chjulian         13769472
14411827    thenriques45     13769472
26681613    ahenotri        252074645
26681613    ahenotri         9796472
158378782   SpringerOpen    9796472
144241914   Kumarappan      252074645
Run Code Online (Sandbox Code Playgroud)

User_INFO表:

  USER_ID     USER_SCREEN_NAME
 22553325   jasonesummers   
23435691    QRJAM   false   
67421923    inTELEgentMSP   
97393397    knauer0x    
85303739    MarriageTheorem 
3842711     seki    
3036414608  Bayes_Rule  
838677852   BOLIGATOR   
Run Code Online (Sandbox Code Playgroud)

我仍然得到上面提到的错误,我做错了什么?

mir*_*173 8

查找当前Oracle版本Oracle错误消息手册.这里提到了错误,但没有附加信息.

在这种情况下查找版本9iOracle错误消息手册 由于我不知道很多错误消息在9i手册中有描述,但在更高版本的手册中没有.9i是一个相当旧的版本,因此描述可能已过时.但它可能包含有价值的提示.

ORA-00998必须使用列别名命名此表达式
原因:在CREATE VIEW语句中使用了表达式或函数,但未指定相应的列名.在视图中使用表达式或函数时,必须在CREATE VIEW语句中显式指定视图的所有列名.
操作:在视图名称后面的括号中为视图中的每列输入列名称.

我们没有视图,只有一个由select创建的表.实际上,选择列表的最后一个表达式是没有别名的表达式.因此,请尝试使用别名表达最后一个表达式.所以试试吧

CREATE TABLE MENTIONS AS SELECT
    UM.USER_ID AS U_ID,
    UM.SCREEN_NAME AS USER_SCREEN_NAME,
    UM.MENTION_ID AS M_USER_ID,
    (
        SELECT
            UI.USER_SCREEN_NAME
        FROM
            USER_INFO UI
        WHERE
            UI.USER_ID = UM.MENTION_ID
        AND ROWNUM = 1
    ) AS MENTIONED_USER
FROM
    USER_MENTION UM
Run Code Online (Sandbox Code Playgroud)

内部选择列表中的列别名是无用的,可以删除.