【问题标题】:Sum of all cells in mysql column except last rowmysql 列中除最后一行之外的所有单元格的总和
【发布时间】:2015-01-20 19:47:37
【问题描述】:

我通过以下查询获取列中所有单元格的总和..

$result = mysql_query("select SUM(previous_balance) as balance from table_name ");
 $row = mysql_fetch_assoc($result);   
 $item_number = $row['balance'];
 $total1 = $item_number ;

 echo $total1; 

但我想省略 SUM 中的最后一个单元格值。我该怎么做 ?

【问题讨论】:

  • 如果没有 ORDER BY 子句,引用“最后”行是没有意义的。
  • 拜托,stop using mysql_* functions 它们不再维护,而是 officially deprecated了解prepared statements,然后使用PDO
  • 在同一事务的新查询中选择最后一个值并扣除该值。或者使用 UNION 在一个查询中获取两个值?或者创建一个存储过程。有很多选择。
  • 你能分享一些示例数据和你想要得到的结果吗?
  • @pcguru 你的建议“在同一事务中选择新查询中的最后一个值并扣除该值”对我有用...thnx

标签: php mysql


【解决方案1】:

根据this answer(如果我没看错的话),以下应该可以选择除最后一行之外的所有内容,然后使用它来总结所有项目

SELECT SUM(previous_balance) as balance FROM table_name WHERE my_primary_key <> (SELECT MAX(my_primary_key) FROM table_name);

【讨论】:

  • 万一主键是1,2,3... 不是随机的!
  • 我不确定我明白你的意思。
  • MAX(my_primary_key) 仅在关键字段具有增量值时才有效。在智能表中,键字段的值类似于379fosi3w03kjfls389
  • 他的意思是,如果 pkey 字段类似于 UUID 而不是 auto_increment,则此方法将不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多