也许这是一个愚蠢的问题,但我真的很难理解下面的SQL查询。
因此,我正在执行此练习:不小于amountDue的间谍的代号是什么?
具有相同间谍大师的间谍的amountDue平均值?
下表如下所示:
codeName firstName lastName dateOfBirth gender mark amountDue spymaster bankAccount
007 James Bond 01-12-72 M Mole on chin 5050 Q 23456
bud Fanny Charleston 31-07-83 F Scar on cheek 25.67 Q 34567
freddie John Smith 05-05-54 M One finger missing 312.5 M 45678
用于解决此问题的代码是:
select codeName
from Spy as S1
where amountDue >=
(select avg(amountDue)
from Spy as S2
where S1.spymaster = S2.spymaster)
我不明白的是WHERE子句中的条件。如果有人能为我解释这一点,不胜感激。
谢谢,
莫
最佳答案
select codeName
from Spy as S1 --outer
where amountDue >=
(select avg(amountDue)
from Spy as S2 --inner
where S1.spymaster = S2.spymaster)
当执行以上两行时,您将从间谍获得所有代号,但是当您应用的条件下,其中amountDue大于等于您获取的平均值,其中s1和s2 spymaster相同。表示您用内部值检查外部值。当值相同时,将显示那些代号。
我了解到我与您分享的信息,如果您有更多关于此的信息,请告诉我,这对我有帮助!
关于mysql - 等同于where子句中同一表中的同一列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26750604/