Mysql 嵌套SQL语句?

Mysql 嵌套SQL语句?,mysql,Mysql,我对sql和嵌套sql语句有很好的了解,但这一条语句现在真的难住了我。本周末,我正在学习数据库系统,出现了一个问题: 结果如何 select distinct T1.B from T as T1 where not exists ( select * from T as T2 where not exists ( select * from T as T3 where T1.B = T3.B and T3.C = T2.C ) ) 用数据 下表T给出了您的答案 A B C 1 10 100 2

我对sql和嵌套sql语句有很好的了解,但这一条语句现在真的难住了我。本周末,我正在学习数据库系统,出现了一个问题:

结果如何

select distinct T1.B
from T as T1
where not exists (
select * from T as T2
where not exists (
select * from T as T3
where T1.B = T3.B and T3.C = T2.C
)
)
用数据 下表T给出了您的答案

A B C
1 10 100
2 10 10
3 40 100
4 30 200
5 25 90
6 10 200
7 10 9
我想我理解嵌套,但该声明如何:

select * from T as T3
where T1.B = T3.B and T3.C = T2.C
工作?在该语句中,T还没有重命名为T1吗?我想这就是嵌套的工作原理,先做括号中的所有事情

我认为结果也会是这样

10
40
30
25

但显然这不是一个问题,因为我似乎不明白这个问题。

double not exist(双重不存在)是一个很难理解的逻辑,即使在它起作用的时候,也很容易让自己迷失方向。所以以后很难调试。试着用更简单的SQL,你的问题到底是什么?第一次查询的结果是什么?或者如何获得结果?@SIDU这是一个来自过去论文的问题,但它绝对是在折磨我的大脑!在这种情况下,相关子查询不会首先运行。(这与内联视图查询不同,内联视图查询是作为行源引用的子查询,而不是from子句中的表。)在这种情况下,首先运行外部查询。对于从T1访问的每一行,评估WHERE子句中的条件。通过执行子查询来计算不存在的。并且再次执行相同的处理。对于访问的每一行,计算WHERE子句,通过执行子查询计算NOT EXISTS。外部查询检查的行的值可用于内部相关子查询。双精度不仅出现在试卷中,我在uni中100%正确,但从未在我的工作中使用它