我想在我的MySQL数据库中添加一列求和的所有列由“tokenvalid”这可能需要1或0的值开始。
让我们说我有50列一样,在我的数据库(即tokenvalid1,tokenvalid2 ....,tokenvalide50)之间与其他列。
请找我想实现下面的代码。我知道这是不正确的,在所有的,但它只是给你什么,我试图做一个想法。谢谢您的帮助!
'SELECT *, sum(column_name LIKE "tokenvalid"%) as total FROM points WHERE 1'
这篇文章应该可以帮助您。该文章描述如何得到列,然后查询结果。
像这样的东西应该帮助你。
SET @colname = (SELECT GROUP_CONCAT(`column_name`) from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='points' AND `column_name` LIKE 'tokenvalid%');
SET @table = 'points';
SET @query = CONCAT('SELECT SUM(',@colname,') FROM ', @table);
PREPARE stmt FROM @query;
EXECUTE stmt;
类似的this到RocketDonkey答案
如果字符串是在外部应用程序(如PHP),当然,只是构建了MySQL的声明。
如果字符串是一个MySQL表里面,你不能。 MySQL有无的eval()或这样的功能。以下是不可能的:
假设你有一个表的查询'与指表中的列名“MYTABLE”的一个字段“列名”。有可能是在“查询”,让您选择您想要的列名附加列...
INSERT INTO queries (columname) VALUES ("name")
SELECT (select columnname from queries) from mytable
你可以用PREPARED STATEMENTS然而工作。要知道这是非常哈克。
SELECT columnname from queries into @colname;
SET @table = 'mytable';
SET @s = CONCAT('SELECT ',@colname,' FROM ', @table);
PREPARE stmt FROM @s;
EXECUTE stmt;