Han*_*nne 2 sql advantage-database-server
我有一个关于子查询的问题.当我分析几个SQL查询时,我偶然发现了一个奇怪的情况.
当我执行以下SQL时,我得到了以下结果:
select *
from orderlyn
where OLWArtnr in (select OlwArtnr from prijs)
Run Code Online (Sandbox Code Playgroud)
但是表格Prijs中不存在OlwArtNr.
CREATE TABLE Prijs (
Nummer Char( 20 ),
Lijst Char( 15 ),
Verkprijs Double( 0 ),
Aankprijs Double( 0 ),
BTW Char( 2 ),
Naam1 Char( 30 ),
Naam2 Char( 30 ),
Naam3 Char( 30 ),
Naam4 Char( 30 ),
Vervangnr Char( 20 ),
Kortcode Char( 10 ),
Datum Date,
Vpeuro Double( 0 ),
A1 Char( 20 )) IN DATABASE;
Run Code Online (Sandbox Code Playgroud)
最让我担心的是,当我用作select nummer from prijs子查询时,它会给出不同的结果.
当列在另一个表中不存在时,为什么优势会给我结果?我认为应该给出错误.
如果有利于解释,它在哪些参数上做这个?
这不是一个错误.它工作正常.
子查询中的OlwArtnr在未完全限定时解析为父查询中的OlwArtnr列.子查询中的非限定列首先使用子查询中的表进行解析.如果它不是子查询中表的列之一,则它将使用父查询中的表转到父查询.此过程继续向上链接,直到列解析为表或生成错误.
您将获得与SQLServer或其他数据库相同的内容.