1

mysql の行を更新したいのですが、すべての列名を指定したくありません。テーブルには 9 行あり、常に最後の 7 行を正しい順序で更新したいと考えています。これらはフィールドです

id
projectid
fangate
home
thanks
overview
winner
modules.wallPost
modules.overviewParticipant

名前を指定せずに最後のいくつかのレコードを更新する方法はありますか? INSERT ステートメントを使用すると、これを行うことで非常に簡単に実行できます。

INSERT INTO `settings`
VALUES (NULL, ...field values...)

だから私はこのようなことができることを望んでいました:

UPDATE `settings`
VALUES (NULL, ...field values...)
WHERE ...statement...

しかし、残念ながらそれはうまくいきません。

4

5 に答える 5

4

最初の2つの列が主キー(または一意のインデックス)を構成している場合は、 replaceを使用できます

だから基本的に書く代わりに

UPDATE settings
   SET fangate = $fangate,
       home = $home,
       thanks = $thanks
       overview = $overview,
       winner = $winner,
       modules.wallPost = $modules.wallPost,
       modules.overviewParticipant = $modules.overviewParticipant
WHERE id = $id AND procjectId = $projectId

あなたは書くでしょう

REPLACE INTO settings
 VALUES ($id, 
         $projectId,
         $fangate,
         $home,
         $thanks
         $overview,
         $winner,
         $modules.wallPost,
         $modules.overviewParticipant)

もちろん、これは行がすでに存在する場合にのみ機能し、そうでない場合は作成されます。また、それが重要な場合は、舞台裏でDELETEとINSERTが発生します。

于 2012-08-30T08:04:39.467 に答える
1

できません。UPDATE は行全体を編集するのではなく、指定された列を編集するため、常に列名を指定する必要があります。UPDATE 構文のリンクは次のとおりです: http://dev.mysql.com/doc/refman/5.0/en/update.html

于 2012-08-30T07:55:17.643 に答える
1

いいえINSERT列名を指定していなくても、VALUE句ですべての値を指定したため、機能します。ここでUPDATE、値を関連付ける列名を指定する必要があります。

UPDATE構文には、変更される列名が必要です。

于 2012-08-30T07:55:30.813 に答える
1

いつも同じテーブルと列を更新していますか?

その場合の 1 つの方法は、スキーマでストアド プロシージャを定義することです。そうすれば、次のことができます。

CALL update_settings(id, projectid, values_of_last_7 ..);

手順を作成する必要がありますが、その方法については Mysql の Web ページを確認してください

于 2012-08-30T08:01:10.987 に答える
0

残念ながら、列名を指定しないわけにはいきません。

アップデートのドキュメントはこちらで参照できます。

于 2012-08-30T07:56:43.590 に答える