我知道我应该在所有列中添加别名而我正在这样做但我仍然会收到错误.
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)
我仍然得到上面提到的错误,我做错了什么?
查找当前Oracle版本的Oracle错误消息手册.这里提到了错误,但没有附加信息.
在这种情况下查找版本9i的 Oracle错误消息手册 由于我不知道很多错误消息在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)
内部选择列表中的列别名是无用的,可以删除.