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

すべての行がnullでない場合は合計し、そうでない場合はMySQLでnullを返しますか?


これは、GROUPBYHAVING句を使用して実現できます。構文は次のとおりです-

SELECT yourColumnName1,
   SUM(yourCoumnName2)
   from yourTableName
   GROUP BY yourColumnName1
HAVING COUNT(yourCoumnName2) = COUNT(*);

上記の構文を理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです-

mysql> create table SumDemo
   -> (
   -> Id int,
   -> Amount int
   -> );
Query OK, 0 rows affected (0.58 sec)

挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。クエリは次のとおりです-

mysql> insert into SumDemo values(1,200);
Query OK, 1 row affected (0.22 sec)
mysql> insert into SumDemo values(2,100);
Query OK, 1 row affected (0.19 sec)
mysql> insert into SumDemo values(2,NULL);
Query OK, 1 row affected (0.14 sec)
mysql> insert into SumDemo values(1,300);
Query OK, 1 row affected (0.16 sec)
mysql> insert into SumDemo values(2,100);
Query OK, 1 row affected (0.17 sec)
mysql> insert into SumDemo values(1,500);
Query OK, 1 row affected (0.16 sec)

selectステートメントを使用して、テーブルのすべてのレコードを表示します。クエリは次のとおりです-

mysql> select *from SumDemo;

出力

+------+--------+
| Id   | Amount |
+------+--------+
|    1 |    200 |
|    2 |    100 |
|    2 |   NULL |
|    1 |    300 |
|    2 |    100 |
|    1 |    500 |
+------+--------+
6 rows in set (0.00 sec)

すべての行がnullでない場合は合計を取得し、そうでない場合はnullを返すクエリを次に示します。クエリは次のとおりです-

mysql> select Id,
   -> SUM(Amount)
   -> from SumDemo
   -> GROUP BY ID
   -> HAVING COUNT(Amount) = COUNT(*);

以下は出力です。 id 2はNULLであるため、その値は合計に追加されません。

したがって、Id 1のすべての値が追加されます。つまり、以下に示すように200 + 300 + 500 =1000-

+------+-------------+
| Id   | SUM(Amount) |
+------+-------------+
|    1 |        1000 |
+------+-------------+
1 row in set (0.09 sec)

  1. 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(

  2. 正の値を持つ行に対してTRUEを返すMySQLクエリ?

    正の値の場合はTRUEを返し、負の値の場合はFALSEを返すには、MySQL IF()を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable2038    -> (    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> Value int    -> ); Query OK, 0 rows affected (0.87 sec) 挿入コマンド-を使用して、テーブルにいくつかのレ