Mysql选择总和低于给定值的记录

Mysql选择总和低于给定值的记录,mysql,Mysql,我对mysql有些陌生,遇到了一个问题。我有两张桌子。一个包含客户信息,第二个包含账单信息。我需要为每个客户计算所有账单的总成本,然后只选择总和小于1000的客户信息/账单信息 这是我正在使用的两张桌子 客户表 CustId last_name first_name address phone email ----------------------------------------------------------------------- C1

我对mysql有些陌生,遇到了一个问题。我有两张桌子。一个包含客户信息,第二个包含账单信息。我需要为每个客户计算所有账单的总成本,然后只选择总和小于1000的客户信息/账单信息

这是我正在使用的两张桌子

客户表

CustId  last_name  first_name  address       phone        email
-----------------------------------------------------------------------
C1      Johnson    Cathryn     123 This Wy.  555-555-5555 me@gmail.com
C2      Bova       Vanessa     234 This Wy.  555-555-1111 van@gmail.com
C3      Kuney      Albert      356 This Wy.  555-555-2222 Al@gmail.com
计费表

end_date    total_cost    billing_id    CustID    Rental_ID
-----------------------------------------------------------
2014-05-25  249.95        CR011         C1        R1
2014-07-30  49.99         CR012         C2        R2
2014-08-25  809.91        CR013         C3        R#
这两个表的Create table语句是:

create table customer
(
CustID varchar(10) not null,
last_name varchar(50) not null,
first_name varchar(50),
address varchar(50),
phone varchar(15),
email varchar(50),
constraint pk_CustID primary key (CustID)
);

我想用的说法是

select c.last_name, c.first_name, sum(b.total_cost) 'from customer c left 
join billing b on c.custid = b.custid 
where b.total_cost < 1000 
group by c.last_name, c.first_name 
order by c.last_name, c.first_name;

我遇到的问题是,它仍然返回总和大于1000的记录。非常感谢您的帮助

这是因为在您当前的查询中,您正在对总成本<1000的项目求和。请尝试以下操作:

SELECT * FROM (

    select c.last_name, c.first_name, sum(b.total_cost) as tc
    from customer c left join billing b  
    on c.custid = b.custid
    group by c.last_name, c.first_name
    order by c.last_name, c.first_name ) AS A

WHERE tc < 1000

请注意,由于您尚未发布您的表格,我无法测试上述内容

当我尝试时,我收到一个错误。。。错误1064 42000:您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解正确的语法,以便使用接近'name,c.first_name order by c.last_name,c.first_name A,其中tc<1000'在第5行,我更新了我的OP,使其具有与我的表类似的示例表。我的桌子比那个大。我希望这就是你想要的。我感谢你的帮助。谢谢,好的,在这里。数据库中还有其他表,这就是为什么这些表中有其他约束的原因,但我认为这些其他表甚至不应该在这里发挥作用…???谢谢。帮助我发现我忘记了AS关键字。请看更新,哪里被遗忘了?或者我应该说我需要把它放在哪里才能使它正常工作?
SELECT * FROM (

    select c.last_name, c.first_name, sum(b.total_cost) as tc
    from customer c left join billing b  
    on c.custid = b.custid
    group by c.last_name, c.first_name
    order by c.last_name, c.first_name ) AS A

WHERE tc < 1000