我有一个安静的大型数据库,只有很少的表,我正在尝试运行一个查询,显示只有1次存款的客户列表。所以我联合两个表是客户其他存款。
客户表:
id,firstName,LastName,Email,Tel等.....
存款表:
id,customerId,amount,confirmTime等.....
SQL查询......
select
customer.id as 'Customer ID',
(select count(deposits.customerId) from deposits
where customer.id=deposits.customerId) as 'No. of Deposits',
deposits.amount as 'Deposit Amount',
deposits.confirmTime as 'Confirmation TIme'
from customer
left join deposits on customer.id=deposits.customerid
group by customer.id
此查询返回一个很好的列表,其中包含存款数量和日期的所有客户,问题是查询带来了我想要查询的所有存款数量,只显示客户哪里没有。存款= 1
但是我遇到了问题,因此无法想出实现这一目标的正确途径。
答案 0 :(得分:1)
您可以将所有查询作为子查询并为其列添加别名。我在这里写,:
select tab.ID as 'Customer ID',tab.count as 'No. of Deposits',
tab.dmt as 'Deposit Amount', tab.ct as 'Confirmation TIme' from
(select customer.id as ID,(select count(deposits.customerId) from deposits where
customer.id=deposits.customerId) as count,
deposits.amount as dmt,deposits.confirmTime
as ct from customer left join deposits on customer.id=deposits.customerid group by
customer.id)as tab where tab.count=1;
如果它没有帮助你那么让我知道我会告诉你另一种方式。