出于好奇:SQL标准中的列名是否优先?
我们来看看这个问题:
select * from mytable m1
where col1 = 123
and exists
(
select * from mytable m2
where m2.col2 = m1.col2 and m2.col1 = 456
);
在Oracle中,我可以省略col1和col2上的限定符m2,因为内部表(m2)优先于外部表(m1)。那条线将是
where col2 = m1.col2 and col1 = 456
仍然有效。这种行为是标准SQL吗?即我可以依赖此查询在任何标准兼容的dbms中工作吗?或者这只是Oracle提供的方便性增强(也可能是大多数其他dbms)?
答案 0 :(得分:2)
标准ANSI / ISO SQL的行为与此完全相同! (但我无法保证所有dbms产品都符合标准,所以我建议保留符合条件的产品。)