1

次のように(phpに関連して)mysqlテーブルレコードを更新することに興味があります。

  1. 値を更新します。例: mysql テーブルの値は「100」です。ユーザーは、その値に「50」を追加したいと考えています。PHPコードを使用してmysqlテーブルに「50」を渡すと、「50」が「100」に追加され、「150」に更新されます。

  2. データを既存の値に追加します。例: mysql テーブル フィールド "Contact" (0123456789) には既に番号があり、新しい番号を同じフィールドに追加し、コンマなどを使用して区切る必要があります (0123456789、9876543210)。フィールド contact1、contact2 などを使用しない。

私は通常、テーブルからすべてのデータを取得し、すべての数学演算を実行してから、テーブルを上書きして更新します。この種の状況を管理する dbms の方法はありますか?

4

4 に答える 4

1

あなたが提起した最初の質問について:

UPDATE tablename SET column_with_ints = column_with_ints + 50;

2 番目の答えについては、MySQL で同じ方法で文字列を連結できます。

UPDATE tablename SET column_with_string = CONCATE(column_with_stringA, column_with_stringB);
于 2012-12-05T06:30:26.553 に答える
1

更新時に、現在のフィールド値を参照できます。

例えば

1 のクエリ。

UPDATE table SET col1 = col1+50 WHERE condition;

2 のクエリ。

UPDATE table SET col1 = CONCAT( col1, ', 9876543210' );
于 2012-12-05T06:32:44.893 に答える
1

1 に使用できます

set col =col + 50

2つの場合は使用できます

set contact = case when contact is null then '12345' else concat(contact, ',  12345') end

ただし、データベースでcsvを使用することは、特定の状況でのみ良いことです。これは私が思うにそれらの1つではありません。別のテーブルとの1対多の関係を使用します。以下を検討してください。

  1. 連絡先番号を 1 つ削除すると、文字列が解析されて新しい値が作成されます。
  2. 特定の数の人を見つける
  3. 番号順
于 2012-12-05T06:28:53.293 に答える
0
  1. myTable set MyValue=MyValue+50 where myId=x を更新します
  2. myTable set MyValue=CONCAT(MyValue,',9876543210') where myId=x を更新します
于 2012-12-05T06:30:48.583 に答える