首页 > 解决方案 > 用于添加列的 SQL 查询

问题描述

| ORDERID | subtotal | 
--------------------
|  1000   |   50  |    

|  1000   |   100 |

|  1001   |   75  |

当 orderid 为 1000 并返回 150 时,需要一个汇总所有价格的查询。我尝试了带有 where 子句的 sum 函数,但它不起作用。这是我的代码:

public double findTotalSubtotal(String order_id) {
     double sum = 0 ;
     PreparedStatement ps;
    try {
        ps = connect.prepareStatement("select sum(subtotal) from order where ORDERID = ?");

     ps.setString(1,order_id);
     ResultSet rs = ps.executeQuery();
     while (rs.next()) {
          int c = rs.getInt(1);
          sum = sum + c;
        }
     }catch(Exception ex) {
         ex.printStackTrace();
     }

    return sum;

}

任何我的错误:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“order where ORDERID = '1000'”附近使用正确的语法

标签: mysqlsqlsum

解决方案


编辑以包括实际的表名。

通过您的表名的附加信息,我可以看到问题所在。“order”是一个 SQL 关键字,因此您不能将其按原样用作查询中的表名。你必须用方括号括起来(因为 MariaDB):

select sum(price) from `order` where ORDERID = 1000

这假定价格存储为数字类型。通常这是一个非常安全的假设,但如果您将其存储为 VARCHAR,这将不起作用(您可能应该更改表结构以使用更合适的类型)。


推荐阅读