mysql - 用于添加列的 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'”附近使用正确的语法
解决方案
编辑以包括实际的表名。
通过您的表名的附加信息,我可以看到问题所在。“order”是一个 SQL 关键字,因此您不能将其按原样用作查询中的表名。你必须用方括号括起来(因为 MariaDB):
select sum(price) from `order` where ORDERID = 1000
这假定价格存储为数字类型。通常这是一个非常安全的假设,但如果您将其存储为 VARCHAR,这将不起作用(您可能应该更改表结构以使用更合适的类型)。
推荐阅读
- java - 非空约束失败
- sockets - 套接字如何确定请求机器
- gmail - 如何修复 G1ANT imap 不检索任何电子邮件?
- git - 如何自动从 Azure DevOps 中的 master 分支
- javascript - 使用 React Dom 创建具有 id 或类的元素
- java - 由于接收超时和任务执行器失调导致的内存泄漏
- c# - 使用 ADFS 时在 ELMAH 中丢失用户信息
- php - 如何让 Woocommerce 计费部分在全球范围内接受付款,但只运送到一个国家、州和城市?
- django - Apache 中的 Django 应用程序部署无法在 Windows 中的 anaconda3 环境中运行
- java - 在Android Studio 3.4中将字符串值从一个活动发送到另一个活动时如何获取所有值