mysqlで1つのセルのデータを変更する


156

mysqlテーブルの1つのセルのみのデータを変更するにはどうすればよいですか。UPDATEは列のすべてのパラメーターを変更するため、UPDATEに問題がありますが、変更したいパラメーターは1つだけです。どうやって?


これまでに何を試しましたか?使用しているクエリを共有できますか?通常、「列内のすべてのパラメーター」を更新することはありません
Nico Haase

回答:


191

おそらく、更新する行を指定する必要があります...

UPDATE 
    mytable
SET 
    column1 = value1,
    column2 = value2
WHERE 
    key_value = some_value;

1
SETは変更する行を選択し、WHEREがそれらを変更したと考えて、この答えに戸惑いました。
キース

WHEREの条件はcolumn1 = old_valueになりますか?
weefwefwqg3

@ weefwefwqg3、はい、できますが、意味がありません。値を変更しない場合は、SET部分を除いてください。
ブライアンフーパー

1
@ブライアンフーパー:私は値を変更する必要があります、私がこれを行うことができるかどうか尋ねるつもりです:UPDATE mytable SET column1 = new_value WHERE column1 = old_value;
weefwefwqg3

2
@ weefwefwqg3、ああ、すみません、近視の攻撃ですね。はい、それで問題ありません。
ブライアンフーパー

112

私の答えは、他の人が以前言ったことを繰り返しMySQLていますが、以前の答えが私には少し謎めいたためだけに、を使用して例を追加したいと思いました。

単一の行の列を更新するために使用する必要があるコマンドの一般的な形式:

UPDATE my_table SET my_column='new value' WHERE something='some value';

そして、ここに例があります。

mysql> select aet,port from ae;
+------------+-------+
| aet        | port  |
+------------+-------+
| DCM4CHEE01 | 11112 | 
| CDRECORD   | 10104 | 
+------------+-------+
2 rows in set (0.00 sec)

変化を起こす

mysql> update ae set port='10105' where aet='CDRECORD';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select aet,port from ae;
+------------+-------+
| aet        | port  |
+------------+-------+
| DCM4CHEE01 | 11112 | 
| CDRECORD   | 10105 | 
+------------+-------+
2 rows in set (0.00 sec)

このデモをありがとう。上記のクエリは、列aet内のCDRECORDのすべてのインスタンスを更新します。ただし、特定の列の特定のセルを更新する場合は、列のIDに基づいて更新することをお勧めします。つまり、ID = xx
Mohammed

通常、行の主キーである行の一意の識別子(IDであることが多いですが、常にではありません)を使用するのが最善です。正直なところ、「ベスト」プラクティスを定義する何をしたいかによって異なります
Garret Gang

30

UPDATE 具体的にリストする列のみを変更します。

UPDATE some_table
SET field1='Value 1'
WHERE primary_key = 7;

このWHERE句は、更新される行を制限します。通常、これを使用してテーブルの主キー(またはID)値を識別し、1つの行のみを更新します。

このSET節は、更新する列をMySQLに指示します。必要な数だけ列をリストできます。リストにないものは更新されません。


11

UPDATE 指定した値のみを変更します。

UPDATE table SET cell='new_value' WHERE whatever='somevalue'

9

以下を試してください:

UPDATE TableName SET ValueName=@parameterName WHERE
IdName=@ParameterIdName

他の人がそれから学ぶことができるように、あなたの答えにいくつかの説明を追加してください-それは何を@parameterName しますか?
ニコHaase

7

UPDATE TABLE <tablename> SET <COLUMN=VALUE> WHERE <CONDITION>

例:

UPDATE TABLE teacher SET teacher_name='NSP' WHERE teacher_id='1'

3

これを試して。

UPDATE `database_name`.`table_name` SET `column_name`='value' WHERE `id`='1';

1
Stack Overflowへようこそ!このコードスニペットは歓迎されており、多少の助けになるかもしれませんが、質問への対処方法の説明含まれていれば大幅に改善されます。それがなければ、あなたの答えは教育的価値がはるかに低くなります-あなたが今尋ねている人だけでなく、将来的に読者のための質問に答えていることを忘れないでください!回答を編集して説明を追加し、適用される制限と前提を示してください。
Toby Speight 2017年

0

MySQLの一部の列には「更新時」句があります。以下を参照してください。

mysql> SHOW COLUMNS FROM your_table_name;

これを更新する方法はわかりませんが、見つけたら編集内容を投稿します。


「更新中」がある場合、上記のコマンドを実行したときに取得するテーブルの「追加」列に表示されます。
Jake_Howard
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.