Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在select查询中使用列名称的动态选择进行求和?_Mysql_Sql - Fatal编程技术网

Mysql 如何在select查询中使用列名称的动态选择进行求和?

Mysql 如何在select查询中使用列名称的动态选择进行求和?,mysql,sql,Mysql,Sql,我想我可能是处理这一切都错了,所以如果我是请让我知道 我有一张像这样的桌子: Id | Region | 0 | 10 | 20 | 30 | 40 | 50 ----------------------------------------- 01 | London | 24 | 45 | 38 | 29 | 36 | 49 ----------------------------------------- 02 | Bham | 27 | 42 | 33 | 31 | 38 | 41

我想我可能是处理这一切都错了,所以如果我是请让我知道

我有一张像这样的桌子:

Id | Region |  0 | 10 | 20 | 30 | 40 | 50
-----------------------------------------
01 | London | 24 | 45 | 38 | 29 | 36 | 49
-----------------------------------------
02 | Bham   | 27 | 42 | 33 | 31 | 38 | 41 
-----------------------------------------
03 | Lpool  | 23 | 38 | 29 | 31 | 34 | 49 
其中一行代表一个区域,后面是年龄范围为0-10、10-20、20-30等的人口。我希望能够为给定的年龄范围选择人口总数。例如,对于10-40:

SELECT (p.10 + p.20 + p.30) FROM Population p WHERE Id = 01

我该如何使用自定义范围进行此操作?例如,一个存储过程,它接受年龄范围的最小值和最大值。SP不是问题所在,只是能够动态定义要求和的列范围

如果要在自定义范围内选择,查询如下所示:- 从中选择*
介于和之间的位置

您可以使用“AND”操作给出另一个条件 你做错了

SELECT (p.10 + p.20 + p.30) FROM Population p WHERE Id = 01
您缺少人口p之间的下划线。别的 试试这个:

SELECT * FROM table WHERE  BETWEEN 10 and 40 AND id=id_no

在这种情况下,可能最好构建一个表
人口(Id、地区、年龄)
,从而以行而不是几列的形式显示数字。这也是我的想法,但我有一个很好的CSV格式的数据,以这种当前格式组织,更不确定如何进行转换!如果我没有得到任何答案,我可能不得不咬紧牙关接受你的建议!如果你不采纳这个建议,从长远来看,你可能会吃更多的苦头。我同意其他评论者的意见,他们建议取消这些数据。我不认为有一个很好的答案来回答所提出的问题。但是对于行,这里的列应该在0到10之间。来自人口p的符号
是有效的SQL;它为
Population
提供了表别名
p
,因此可以使用
p.column
表示法。像
p.10
这样的名称是可疑的,因为
10
不是有效的列名。在MySQL中,您可能必须将名称括在后面的记号中:
p.`10`…
(这在MarkDown中是地狱),或者在标准SQL中,您可以使用分隔标识符
p.“10”
——或者您可以将列重命名为有效名称,如
ages\u 0\u 9
ages\u 10\u 19
,或者类似的方案。