Tech Neo 创造一个纯粹高质的技术交流平台

SQL中不知道列名通过列号求他们的和

有表T

 列号        1     2   3   4
 属性名     a     b   c   d
            k    10  20  30
            p    30   2   6

表中a为主键
怎么求a='k'时的第二列和第三列之和(前提是不知道属性名,只能通过列号运算)

请先 登录 后评论

9 个回答

CSDN用户

sql 中没有“列号”一说,如果你不知道列名,可以通过
select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH from information_schema.columns where TABLE_NAME='表名'
查询表中有什么字段,数据类型等信息。
然后再根据这个去查询你要的那个。

请先 登录 后评论
CSDN用户

select 列名,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH from 表的列名 where TABLE_NAME='表名'
这个就可以完成你的要求吧应该

请先 登录 后评论
CSDN用户

获取当a=k时的所有数据,然后用结果集获取第二列和第三列的值呀,再求和

请先 登录 后评论
CSDN用户

rs.getInt(int index); rs.getInt(String columName);要么根据索引,要么根据字段名称获取值

请先 登录 后评论
CSDN用户

首先可以通过一下SQL来获取到你想要的列的列名,(下面的SQL只需要改表名,limit表示获取第一个列的列名):

SELECT COLUMN_NAME FROM information_schema.columns WHERE TABLE_NAME='test1' LIMIT 0,1

因为MySQL中没有函数能将一个 字符串 装换成一个字段/属性。
所以你有两种方式来实现 求a='k'时的第二列和第三列之和 的业务,第一,拆分业务 一个方法 获取到列名另一个方法使用获取到的列名 来重新拼接SQL来进行查询求和,第二 ,下一个存储过程在存储过程中先查询 到列名然后 拼接 SQL语句求和。

请先 登录 后评论
CSDN用户

将值为k的数据取出,select sum(b_c) from TABLE where A='k'

请先 登录 后评论
CSDN用户

最慢的方法,取出数据做累加和

请先 登录 后评论
CSDN用户

解谜一样。以mysql为例:

create table temp_s (`a` varchar(10), `val1` int, `val2` int);
select * into outfile '~/temp_112.txt' from test_s where a='k';
load data local infile '~/temp_112.txt' into table temp_s fields terminated by '\t' (a,val1,val2);
select sum(val1+val2) from temp_s;

不需要知道原表的列名。

请先 登录 后评论
哈韩浪子 - 程序员

可以起别名啊

请先 登录 后评论