MySqlのサブクエリと同じクエリを記述せずにWHERE句で実際の行数(COUNT(*))を使用するにはどうすればよいですか?
where句を使用してこれを実現します。
構文は次のとおりです
SELECT yourColumnName1,yourColumnName2,...N FROM yourTableName WHERE ( SELECT COUNT(*) FROM yourTableName )=2;
概念を理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです
mysql> create table CountWithSubqueryDemo - > ( - > Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, - > EmployeeName varchar(20) - > ); Query OK, 0 rows affected (2.09 sec)
挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。
クエリは次のとおりです
mysql> insert into CountWithSubqueryDemo(EmployeeName) values('John'); Query OK, 1 row affected (0.54 sec) mysql> insert into CountWithSubqueryDemo(EmployeeName) values(NULL); Query OK, 1 row affected (0.36 sec) mysql> insert into CountWithSubqueryDemo(EmployeeName) values('Carol'); Query OK, 1 row affected (0.23 sec) mysql> insert into CountWithSubqueryDemo(EmployeeName) values(''); Query OK, 1 row affected (0.31 sec) mysql> insert into CountWithSubqueryDemo(EmployeeName) values('Bob'); Query OK, 1 row affected (1.24 sec) mysql> insert into CountWithSubqueryDemo(EmployeeName) values(NULL); Query OK, 1 row affected (0.30 sec) mysql> insert into CountWithSubqueryDemo(EmployeeName) values('Sam'); Query OK, 1 row affected (0.18 sec) mysql> insert into CountWithSubqueryDemo(EmployeeName) values('Mike'); Query OK, 1 row affected (0.18 sec) mysql> insert into CountWithSubqueryDemo(EmployeeName) values('James'); Query OK, 1 row affected (0.26 sec)
selectステートメントを使用してテーブルのすべてのレコードを表示します。
クエリは次のとおりです
mysql> select *from CountWithSubqueryDemo;
以下は出力です
+----+--------------+ | Id | EmployeeName | +----+--------------+ | 1 | John | | 2 | NULL | | 3 | Carol | | 4 | | | 5 | Bob | | 6 | NULL | | 7 | Sam | | 8 | Mike | | 9 | James | +----+--------------+ 9 rows in set (0.19 sec)
以下は、where句で実際の行数を使用する方法です
mysql> select Id,EmployeeName from CountWithSubqueryDemo - > where - > ( - > select count(*) from CountWithSubqueryDemo - > )=2; Empty set (0.03 sec)
上記のクエリでは、テーブルに2つのレコードしかない場合に行が返されるため、空のセットを取得しています。したがって、テーブルからすべてのレコードを削除し、テーブルに2つのレコードを挿入しましょう。
クエリは次のとおりです
mysql> truncate table CountWithSubqueryDemo; Query OK, 0 rows affected (1.95 sec)
挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。
クエリは次のとおりです
mysql> insert into CountWithSubqueryDemo(EmployeeName) values('James'); Query OK, 1 row affected (0.15 sec) mysql> insert into CountWithSubqueryDemo(EmployeeName) values(NULL); Query OK, 1 row affected (0.46 sec)
selectステートメントを使用してテーブルのすべてのレコードを表示します。
クエリは次のとおりです
mysql> select *from CountWithSubqueryDemo;
以下は出力です
+----+--------------+ | Id | EmployeeName | +----+--------------+ | 1 | James | | 2 | NULL | +----+--------------+ 2 rows in set (0.00 sec)
次に、where句の行数のクエリを示します
mysql> select Id,EmployeeName from CountWithSubqueryDemo - > where - > ( - > select count(*) from CountWithSubqueryDemo - > )=2;
以下は出力です
+----+--------------+ | Id | EmployeeName | +----+--------------+ | 1 | James | | 2 | NULL | +----+--------------+ 2 rows in set (0.00 sec)
-
MySQLで同じ行の個別のレコードからのカウントを表示するにはどうすればよいですか?
このために、GROUP BY句とともにGROUP_CONCAT()、COUNT()を使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable -> ( -> CompanyId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> CompanyName varchar(20) -> ); Query OK, 0 rows affected (0.62 sec) 挿入コマンド-を
-
MySQL列の各行の同じ値を数えますか?
各行の同じ値をカウントするには、GROUP BY句とともにCOUNT(*)を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable1818 ( Id int, Name varchar(20) ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into