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

MySQLにレコードが存在しない場合に合計または0を選択するにはどうすればよいですか?


COALESCE()内で集計関数sum()を使用できます。以下の構文は、レコードが存在する場合はすべての合計を返し、そうでない場合は0が返されます。構文は次のとおりです。

select COALESCE(sum(yourColumnName2), 0) AS anyVariableName from yourTableName
where yourColumnName1 like '%yourValue%';

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

mysql> create table SumDemo
-> (
-> Words varchar(100),
-> Counter int
-> );
Query OK, 0 rows affected (0.93 sec)

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

mysql> insert into SumDemo values('Are You There',10);
Query OK, 1 row affected (0.16 sec)

mysql> insert into SumDemo values('Are You Not There',15);
Query OK, 1 row affected (0.13 sec)

mysql> insert into SumDemo values('Hello This is MySQL',12);
Query OK, 1 row affected (0.09 sec)

mysql> insert into SumDemo values('Hello This is not MySQL',14);
Query OK, 1 row affected (0.24 sec)

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

mysql> select *from SumDemo;

以下は出力です。

+-------------------------+---------+
| Words                   | Counter |
+-------------------------+---------+
| Are You There           | 10      |
| Are You Not There       | 15      |
| Hello This is MySQL     | 12      |
| Hello This is not MySQL | 14      |
+-------------------------+---------+
4 rows in set (0.00 sec)
>

これは、レコードが存在する場合は常に合計を求めるクエリです。

mysql> select COALESCE(sum(Counter), 0) AS SumOfAll from SumDemo where Words like '%hello%';

以下は出力です。

+----------+
| SumOfAll |
+----------+
| 26       |
+----------+
1 row in set (0.00 sec)

レコードが存在しない場合は、0になります。クエリは次のとおりです。

mysql> select COALESCE(sum(Counter), 0) AS SumOfAll from SumDemo where Words like '%End of MySQL%';

以下は出力です。

+----------+
| SumOfAll |
+----------+
| 0       |
+----------+
1 row in set (0.00 sec)

  1. MySQLで再帰的なSELECTクエリを実行するにはどうすればよいですか?

    再帰的選択については、例を見てみましょう。まず、テーブルを作成します。 CREATEコマンドを使用してテーブルを作成します。 ); Query OK, 0 rows affected (0.61 sec) 次に、テーブル「tblSelectDemo」にレコードを挿入します。 insert into tblSelectDemo values(5,Bob); Query OK, 1 row affected (0.18 sec) すべてのレコードを表示します。 SELECT *from tblSelectDemo; これが出力です。 +------+-------+ | id

  2. MySQLから最後の10行を選択するにはどうすればよいですか?

    MySQLから最後の10行を選択するには、SELECTステートメントとLimitの概念でサブクエリを使用できます。以下は例です。 テーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected (0.75 sec) テーブルにレコードを挿入します。 mysql> insert into Last10RecordsDemo values(1,John),(