MySQL SELECT DISTINCT 和 count?
mysqlmysqli database
您需要使用 MySQL 中的 GROUP BY 命令和聚合函数 count(*) 来实现此目的。语法如下:
SELECT yourColumnName,COUNT(*) AS anyVariableNameFROM yourTableName GROUP BY yourColumnName;
为了理解上述语法,让我们创建一个表。创建表的查询如下:
mysql> create table selectDistinct_CountDemo -> ( -> Id int NOT NULL AUTO_INCREMENT, -> Name varchar(10), -> AppearanceId int, -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (0.63 sec)
使用 insert 命令在表中插入一些记录。 查询语句如下:
mysql> insert into selectDistinct_CountDemo(Name,AppearanceId) values('Larry',1); Query OK, 1 row affected (0.18 sec) mysql> insert into selectDistinct_CountDemo(Name,AppearanceId) values('John',2); Query OK, 1 row affected (0.24 sec) mysql> insert into selectDistinct_CountDemo(Name,AppearanceId) values('Larry',3); Query OK, 1 row affected (0.12 sec) mysql> insert into selectDistinct_CountDemo(Name,AppearanceId) values('Larry',10); Query OK, 1 row affected (0.18 sec) mysql> insert into selectDistinct_CountDemo(Name,AppearanceId) values('Carol',11); Query OK, 1 row affected (0.18 sec) mysql> insert into selectDistinct_CountDemo(Name,AppearanceId) values('Larry',15); Query OK, 1 row affected (0.18 sec)
使用 select 语句显示表中的所有记录。查询如下:
mysql> select *from selectDistinct_CountDemo;
输出结果如下:
+----+-------+--------------+ | Id | Name | AppearanceId | +----+-------+--------------+ | 1 | Larry | 1 | | 2 | John | 2 | | 3 | Larry | 3 | | 4 | Larry | 10 | | 5 | Carol | 11 | | 6 | Larry | 15 | +----+-------+--------------+ 6 rows in set (0.00 sec)
这是选择不同并计数的查询:
mysql> select Name,count(*) as TotalAppearance from selectDistinct_CountDemo -> group by Name;
输出结果如下:
+-------+-----------------+ | Name | TotalAppearance | +-------+-----------------+ | Larry | 4 | | John | 1 | | Carol | 1 | +-------+-----------------+ 3 rows in set (0.00 sec)