2012-04-23 58 views
0

我需要總和除第一列以外的行的總和。
類似的東西太多:如何總結一行中所有列的值,除了ID

SELECT SUM(COL2 + COL3 + COL4 +科隆) FROM號碼 其中user_name = '人';

我的表格將不斷添加列。所以我希望它能夠自動獲取新列的總和,而不需要將其硬編碼到查詢中?

user_name | Col | col2 | Col3 | Col4 + other columns. 

person1 | 2 | 3 | 76 | 56 etc. ---------> sum of row 

person2 | 6 | 72 | 200 | 13 etc. ---------> sum of row 

在此先感謝您的幫助!

+0

如果你需要做到這一點,那麼你會得到很好的建議在教育部合適的方式 – 2012-04-23 12:12:43

+0

這將有助於瞭解正常化數據庫更多關於您在Col1,Col2 ... ColN中存儲什麼樣的信息。如果您能夠更新您的問題或在此處添加評論以獲取更多詳細信息,我會看看是否可以通過更多示例更新我的答案。 – Squig 2012-04-23 13:49:27

回答

3

不希望'迴避'這個問題,但它看起來像你可以做一個不同的數據結構。

你應該考慮與列的「用戶」表iduser_name,和一個新的表(例如properties),在當前的表中的一行其他每個列(Col1Col2 ... ColN) 。然後新表將有一個用於user_name的列將其鏈接到用戶表。

這樣,你可以這樣做:

SELECT SUM(property_column) FROM properties WHERE user_name = <RequiredUserName> 

我也建議選擇由ID的用戶(即有properties表一中user_id列,而不是USER_NAME列)除非你確信user_name永遠不會改變(甚至......)。

+0

好的,謝謝我已經這樣做了。現在我試圖將數據插入到特定的字段中。 INSERT INTO tablename(colNumberX) VALUES 500 WHERE(ID Coulmn)= * idnumber * ----->類似這樣的東西。有任何想法嗎? – cbarlow123 2012-04-23 17:00:14

+0

很難推薦不知道更多的上下文。如果你的新屬性表有用於user_name,property_name和value的列,那麼你可以使用INSERT INTO屬性(user_name,property_name,value)VALUES(「billy」,「high score」,500)。您可能還希望將兩個主鍵都設爲user_name和property_name,以便您可以在查詢的末尾添加「ON DUPLICATE KEY UPDATE」。如果這些用戶/屬性組合已經存在,則會替換這些值。可能值得用更多信息更新您的原始問題,否則將此部分記錄爲新問題。 – Squig 2012-04-24 10:17:07

0

如前所述,你將得到更好的建議重新審視你的數據庫結構, 如果你不能和 如果你想這樣做在PHP中,你可以得到的結果集回來,然後遍歷領域和排除領域你不不想再把所有其他東西加起來,假設它是正確的類型,請使用mysql_field_type來查找特定類型的類型。

1

也許最簡單的方法是做在PHP:

$res = mysql_query("select * from numbers where user = ..."); 
while ($row = mysql_fetch_assoc($res)) { 
    $row['Id'] = 0; // don't want to sum the Id 
    $sum = array_sum($row); // this is the required sum 
    .... 
} 
+0

您的意思是$ row ['user_name'] = 0; //不想總結user_name?我知道Id會更好。只是與OP的現有專欄名稱... – Squig 2012-04-23 12:42:22

+0

以及@Squig,在他說的標題ID,所以我的工作... – TMS 2012-04-23 13:56:03

+0

'這是真的。很公平 :-) – Squig 2012-04-23 13:59:05

相關問題