UPDATEステートメントのSET句で新しい値を割り当てるために使用されるサブクエリが行を返さない場合、MySQLは何を返しますか?
この場合、MySQLはSET句にNULL値を提供します。次の例はそれを示します-
mysql> Select * from student; +----+---------+-----------+ | Id | Name | grade | +----+---------+-----------+ | 1 | Rahul | Good | | 2 | Gaurav | Good | | 3 | Raman | Excellent | | 4 | Harshit | Average | | 5 | Aarav | Best | | 6 | Ram | average | +----+---------+-----------+ 6 rows in set (0.00 sec) mysql> select * from info; +------+-----------+ | id | remarks | +------+-----------+ | 1 | Good | | 2 | Good | | 3 | Excellent | | 4 | Average | | 5 | Best | +------+-----------+ 5 rows in set (0.00 sec)
上記の2つのテーブルから、「student」テーブルには6行があり、「grade」の値は「average」(id =6、「info」テーブルには5行)であることがわかります。これで、次のクエリで使用されるサブクエリは、SET句に新しい値を与える行を提供しないため、NULL値を挿入します。次のクエリの出力から調べることができます-
mysql> UPDATE STUDENT SET grade = (SELECT remarks from info WHERE info.id = student.id) WHERE id = 6; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> Select * from student; +----+---------+-----------+ | Id | Name | grade | +----+---------+-----------+ | 1 | Rahul | Good | | 2 | Gaurav | Good | | 3 | Raman | Excellent | | 4 | Harshit | Average | | 5 | Aarav | Best | | 6 | Ram | NULL | +----+---------+-----------+ 6 rows in set (0.00 sec)
-
条件に基づいて、MySQLテーブルのすべての行に2つの値のみを設定しますか?
条件ベースの更新には、UPDATEおよびIF()を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable ( Value int ); Query OK, 0 rows affected (0.47 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values(10); Query OK, 1 row affected (0.08 sec) mysql> insert into DemoTable values(2
-
MySQLWHERE句の複数の値で更新
最初にテーブルを作成しましょう- mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20), -> Age int, -> CountryName varchar(10) -> ); Query OK, 0 rows affected (0.81 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します