すべての行が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)
-
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(
-
正の値を持つ行に対して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) 挿入コマンド-を使用して、テーブルにいくつかのレ