使用ANY或ALL

时间:2016-10-23 12:59:14

标签: sql

我是SQL的新手,目前正在学习,这可能是一个相当基本的问题:

我有4张桌子

  

1)客户(customerName,street,customerCity)

     

2)存款(customerName,branchName,accountNumber,balance)

     

3)贷款(customerName,branchName,loanNumber,amount)

     

4)分支(branchName,branchCity,assets)

每个表都插入了一些数据。

我被要求找到存款金额最高的customerName。 (所以我猜我会只使用存款表)?

然而,这是捕获,我正在学习的表格要求我必须使用ALL或ANY,我不能简单地使用MAX函数来实现这一点。

我将如何实现这一目标?我已经尝试过查询后的查询,但根本找不到让它工作的方法(请记住,我只学习了一周)。

我一直在尝试的事情是:

  

SELECT customerName

     

FROM Deposit

     

WHERE balance> ALL;

查询应返回1个值,即具有最高余额值的customerName。

非常感谢你的帮助:)!

1 个答案:

答案 0 :(得分:1)

您正在寻找余额大于或等于表格中所有余额的客户

因此您只需使用>=代替>

SELECT customerName
FROM   Deposit
WHERE  balance >= ALL (SELECT balance
                       FROM   Deposit); 

或者,您可以使用相关的子查询,并查找余额大于所有其他余额值的客户。

SELECT customerName
FROM   Deposit d1
WHERE  balance > ALL (SELECT balance
                      FROM   Deposit d2
                      WHERE  d2.balance <> d1.balance); 

如果发生关联,两个查询都将返回金额最高的所有客户。