MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

nullの場合は列Aを更新し、そうでない場合は列Bを更新します。それ以外の場合は、両方の列がnullでない場合はMySQLで何もしません。


このためには、IS NULLプロパティでIF()を使用します。まずテーブルを作成しましょう-

mysql> create table DemoTable1976
   (
   FirstName varchar(20),
   LastName varchar(20)
   );
Query OK, 0 rows affected (0.00 sec)

挿入コマンド-

を使用して、テーブルにいくつかのレコードを挿入します
mysql> insert into DemoTable1976 values('John','Doe');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1976 values('John',NULL);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1976 values(NULL,'Miller');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1976 values('Chris','Brown');
Query OK, 1 row affected (0.00 sec)

selectステートメントを使用してテーブルのすべてのレコードを表示する-

mysql> select * from DemoTable1976;

これにより、次の出力が生成されます-

+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| John      |      Doe |
| John      |     NULL |
| NULL      |   Miller |
| Chris     |    Brown |
+-----------+----------+
4 rows in set (0.00 sec)

これは、nullの場合は列を更新するクエリです。それ以外の場合は葯の列を更新します。それ以外の場合は両方の列がnullでない場合は何もしません-

mysql> update DemoTable1976
   set FirstName=if(FirstName IS NULL,'David',FirstName),
   LastName=if(LastName IS NULL,'Brown',LastName);
Query OK, 2 rows affected (0.00 sec)
Rows matched: 4  Changed: 2 Warnings: 0

テーブルレコードをもう一度確認しましょう-

mysql> select * from DemoTable1976;

これにより、次の出力が生成されます-

+-----------+----------+
| FirstName | LastName |
+-----------+----------+
| John      |      Doe |
| John      |    Brown |
| David     |   Miller |
| Chris     |    Brown |
+-----------+----------+
4 rows in set (0.00 sec)

  1. 1つのMySQLクエリで2つの列を更新します

    このためには、SETコマンドを1回だけ使用する必要があります。まずテーブルを作成しましょう- mysql> create table DemoTable1909    (    Id int NOT NULL,    FirstName varchar(20),    LastName varchar(20)    ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> ins

  2. MySQLの既存の列にNOTNULL属性を設定します

    NOT NULL属性を既存の列に設定するには、ALTERTABLEコマンドを使用します。まずテーブルを作成しましょう- mysql> create table DemoTable1949    (    UserId int,    UserName varchar(20)    ); Query OK, 0 rows affected (0.00 sec) これは、既存の列にNOTNULL属性を設定するためのクエリです- mysql> alter table DemoTable1949 modify