2017-07-04 32 views
-1

我想在我的MySQL數據庫中添加一列求和的所有列由「tokenvalid」這可能需要1或0Mysql的總和開始與一些信件中的所有列

價值,並讓我們說我有開始在我的數據庫中有50列(即tokenvalid1,tokenvalid2 ....,tokenvalide50)與其他列之間的列。

請在下面找到我要實施的代碼。我知道這是不正確的,但只是給你一個我想要做的事情的想法。 謝謝你的幫助!

'SELECT *, sum(column_name LIKE "tokenvalid"%) as total FROM points WHERE 1' 
+1

像那樣的模式違反了[零個,一個或無限的規則]的 (http://en.wikipedia.org/wiki/Zero_one_infinity_rule)數據庫規範化](http://en.wikipedia.org/wiki/Database_normalization),所以這可能是你的問題的根源。你不能總結隨機列名,你通常只能按照SUM()調用選擇一個和一個。 – tadman

回答

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; 

this答案類似由RocketDonkey