mysql从第一行减去所有行的总和
如果我有以下数据mysql从第一行减去所有行的总和,mysql,Mysql,如果我有以下数据 index | value1 | value2 | value3 |... 1 | 100 | 200 | 300 |... 2 | 6 | 30 | 12 |... 3 | 23 | 11 | 22 |... .... 总共有150列,还有很多行。最好的方法是获取除index=1之外的所有行的总和,然后从index1的行中减去总和 ie: value1 = 100-6-23-...
index | value1 | value2 | value3 |...
1 | 100 | 200 | 300 |...
2 | 6 | 30 | 12 |...
3 | 23 | 11 | 22 |...
....
总共有150列,还有很多行。最好的方法是获取除index=1之外的所有行的总和,然后从index1的行中减去总和
ie:
value1 = 100-6-23-...-...-...
value2 = 200-30-11-...-...-...
value3 = 300-12-22-...-...-...
....
有没有什么好的mysql查询可以让我通过条件聚合做这样的事情?你可以这样做:
SUM(CASE WHEN id = 1 THEN 1 ELSE -1 END * value1)
规范化模式可能看起来有点如下所示:
index product stock
1 value1 100
2 value1 6
3 value1 23
1 value2 200
2 value2 30
3 value2 11
1 value3 300
2 value3 12
3 value3 22
正在尝试继续使用现有架构。。。好吧,礼节禁止进一步评论。150栏可能是设计拙劣的症状在这种情况下,几乎可以肯定的是,我知道这是一个非常拙劣的设计,我只是想把它作为一种实践@strawberry这太棒了。因此,练习改进你的模式;这才是真正的技能。嗯,那样的话,我该如何更好地构建它,value1、value2、value3应该是产品名称,下面的数字是库存水平。基本上,我想把第一行作为baed级别,子动作evreything得到一个current numbers anks作为回复,对于这个,你可以计算值1的和,但是如果像我说的那样有150列,我不能做150列,当有n列的时候,有什么方法可以做吗?正如其他人已经说过的,如果您有150个这样的列,那么您的数据库设计可能有问题。如果您最终完成了这样一个预先存在的项目,那么处理该项目的唯一方法就是分别处理每一列。