我正在完成有关对称对的 HackerRank 问题,并通过以下 SQL 查询成功 (Oracle 11g):
SELECT
DISTINCT F1.X, F1.Y
FROM
(
SELECT
X, Y, ROWNUM AS ROW_NUM
FROM
Functions
) F1,
(
SELECT
X, Y, ROWNUM AS ROW_NUM
FROM
Functions
) F2
WHERE
F1.X = F2.Y
AND F2.X = F1.Y
AND F1.X <= F1.Y
AND F1.ROW_NUM != F2.ROW_NUM
ORDER BY
F1.X;
但是,当我尝试使用以下查询来简化它时:
SELECT
DISTINCT F1.X, F1.Y
FROM
Functions F1,
Functions F2
WHERE
F1.X = F2.Y
AND F2.X = F1.Y
AND F1.X <= F1.Y
AND F1.ROWNUM != F2.ROWNUM
ORDER BY
F1.X;
我收到以下错误:
ORA-01747: invalid user.table.column, table.column, or column specification
为什么这不起作用?为什么我必须给
ROWNUM
起一个别名?
ROWNUM
是保留字;它不是表或内联视图的(伪)列。
table_name.column_name
或 inline_view.column_alias
是用于引用表的列或内联视图中定义的别名的语法。 ROWNUM
表中没有 Functions
列。