如何在 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)
使用 INSERT 命令在表中插入一些記錄。
查詢如下:
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 條記錄。
查詢如下:
mysql> truncate table CountWithSubqueryDemo; Query OK, 0 rows affected (1.95 sec)
使用 INSERT 命令在表中插入一些記錄。
查詢如下:
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)
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP