Sql ORA-00998:必须使用列别名命名此表达式
我知道我应该在所有列中添加alias,我正在这样做,但仍然会出错Sql ORA-00998:必须使用列别名命名此表达式,sql,oracle,Sql,Oracle,我知道我应该在所有列中添加alias,我正在这样做,但仍然会出错 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
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
用户提及表
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
用户信息表:
USER_ID USER_SCREEN_NAME
22553325 jasonesummers
23435691 QRJAM false
67421923 inTELEgentMSP
97393397 knauer0x
85303739 MarriageTheorem
3842711 seki
3036414608 Bayes_Rule
838677852 BOLIGATOR
我仍然收到上面提到的错误,我做错了什么?查找。这里提到了错误,但没有附加信息
在这种情况下,请查阅
由于我不知道的原因,很多错误消息在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
内部选择列表中的列别名无效,可以删除 查询的问题是
create表中的每一列都需要有一个名称。您认为您正在子选择中指定名称。然而,你不是
子查询只是返回一个值,而不是一个带名称的值。因此,您版本中提到的用户
什么也不做。我想这有点棘手。考虑标量子查询的一种方式是,它只是另一个表达式或函数调用。内部发生的事情不会影响外部查询——除了返回的值
正确的语法是将列别名放在subselect的外部,而不是内部:
子选择的结果没有别名。请尝试将用户移动到子查询末尾之外?您正在创建一个表。该列需要有一个名称。
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;