Mysql的总结所有列开始与一些字母

问题描述 投票:-1回答:3

我想在我的MySQL数据库中添加一列求和的所有列由“tokenvalid”这可能需要1或0的值开始。

让我们说我有50列一样,在我的数据库(即tokenvalid1,tokenvalid2 ....,tokenvalide50)之间与其他列。

请找我想实现下面的代码。我知道这是不正确的,在所有的,但它只是给你什么,我试图做一个想法。谢谢您的帮助!

'SELECT *, sum(column_name LIKE "tokenvalid"%) as total FROM points WHERE 1'
mysql
3个回答
0
投票

这篇文章应该可以帮助您。该文章描述如何得到列,然后查询结果。

MySQL Like statement in SELECT column_name


0
投票

像这样的东西应该帮助你。

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;

类似的thisRocketDonkey答案


0
投票

如果字符串是在外部应用程序(如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;
© www.soinside.com 2019 - 2024. All rights reserved.