0

最初の列を除く行の合計を合計する必要があります。
似たようなもの:

SELECT SUM(col2 + col3 + col4 + colN)FROM数値WHERE user_name ='person';

私のテーブルには継続的に列が追加されます。それで、クエリにハードコーディングする必要なしに、新しい列の合計も自動的に取得するようにしたいですか?

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

助けてくれてありがとう!

4

3 に答える 3

3

質問を「避けたい」わけではありませんが、別のデータ構造を持つことでできるようです。

idおよびの列を持つ「users」テーブルと、現在のテーブル ( 、... )の他の各列の行を持つuser_name新しいテーブル (例: ) を持つことを検討する必要があります。新しいテーブルには、それを users テーブルにリンクするための user_name の列があります。propertiesCol1Col2ColN

そうすれば、次のようなことができます。

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

また、user_name が決して変更されない (そしてその場合でも...) と確信していない限り、ID でユーザーを選択することをお勧めします (つまりproperties、user_name 列ではなく、user_id 列を持つテーブルを用意します)。

于 2012-04-23T12:16:58.793 に答える
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
    ....
}
于 2012-04-23T12:23:36.117 に答える
0

前述のように、データベース構造を再検討することをお勧めします。それができない場合や、PHP で実行したい場合は、結果セットを取得してフィールドをループし、不要なフィールドを除外してから追加できますそれ以外はすべて、正しいタイプであると仮定して、mysql_field_type を使用して特定のタイプのものを見つけます。

于 2012-04-23T12:17:10.953 に答える