这个问题在这里已经有答案了:
在oracle中“as”别名不起作用(3个答案)
9个月前关门了。
我试着用黑客银行解决这个问题https://www.hackerrank.com/challenges/symmetric-pairs/problem
以下代码适用于mysql和mssqlserver,但不适用于oracle。有人告诉我为什么吗?
with T as (
select x,y, row_number() over (order by x,y) as rnum from functions
)
select distinct a.x,a.y from T as a, T as b
where a.x = b.y and b.x=a.y and a.x<=a.y and a.rnum!=b.rnum
order by a.x,a.y;
似乎如果我删除了“as”,那么它在oracle中就可以工作了。为什么?
with T as (
select x,y, row_number() over (order by x,y) as rnum from functions
)
select distinct a.x,a.y from T a, T b
where a.x = b.y and b.x=a.y and a.x<=a.y and a.rnum!=b.rnum
order by a.x,a.y;
1条答案
按热度按时间d6kp6zgx1#
甲骨文不允许
as
用于表别名。您可以使用以下命令编写查询FROM
条款:然而,这是愚蠢的,因为你不打算
cross join
. 在编写查询时,它将是:如果这是一个有点难以破译这是应该做的。但我想它是想
x
/y
多次出现的组合。如果是,请使用count(*)
取而代之的是:这要简单得多,而且应该有更好的性能。而且,它应该在问题中提到的所有数据库中工作。