300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 判断一个where条件的对错php sql – IN子查询的WHERE条件影响主查询 – 这是一个

判断一个where条件的对错php sql – IN子查询的WHERE条件影响主查询 – 这是一个

时间:2018-07-08 02:37:22

相关推荐

判断一个where条件的对错php sql – IN子查询的WHERE条件影响主查询 – 这是一个

假设有两个表:

Table A: A1,A2,A_Other

Table B: B1,B2,B_Other

在以下示例中,是针对固定值检查的条件,例如,=’ABC’或< 45. 我写了一个如下(1)的查询:

Select * from A

Where A1 IN (

Select Distinct B1 from B

Where B2 is something

And A2 is something

);

我真正打算写的是(2):

Select * from A

Where A1 IN (

Select Distinct B1 from B

Where B2 is something

)

And A2 is something;

奇怪的是,两个查询都返回了相同的结果.在查看查询1的解释计划时,看起来就像执行子查询时一样,因为条件A2不适用于子查询,它被推迟用作主查询结果的过滤器.

我通常希望查询1失败,因为子查询本身会失败:

Select Distinct B1 from B

Where B2 is something

And A2 is something; --- ERROR: column "A2" does not exist

但我发现情况并非如此,Postgres将不适用的子查询条件推迟到主查询.

这是标准行为还是Postgres异常?这记录在哪里,这个功能叫做什么?

此外,我发现如果我在表B中添加列A2,则只有查询2按预期工作.在这种情况下,查询2中的引用A2仍将引用A.A2,但查询1中的引用将引用新列B.A2,因为它现在可直接应用于子查询.

判断一个where条件的对错php sql – IN子查询的WHERE条件影响主查询 – 这是一个功能还是一个错误?...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。