I was completing a HackerRank question on symmetric pairs and succeeded with the following SQL query (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;
However, when I try to simplify it with the following query:
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;
I received the following error:
ORA-01747: invalid user.table.column, table.column, or column specification
Why doesn’t this work? Why do I have to give an alias to ROWNUM
?