SQL里怎么在新的列中显示每个种类的总数

数据如图,一共有4个Documentary和2个Horror,怎么得到红圈内的列。

img

drop table if exists  film_test; 
CREATE TABLE film_test  (
   film_id  smallint(5)  NOT NULL,
   name  varchar(25) NOT NULL);
INSERT INTO film_test VALUES(1,'Documentary');
INSERT INTO film_test VALUES(2,'Horror');
INSERT INTO film_test VALUES(3,'Documentary');
INSERT INTO film_test VALUES(4,'Horror');
INSERT INTO film_test VALUES(5,'Documentary');
INSERT INTO film_test VALUES(6,'Documentary');

select
file_id,
name,
(select count(*) from film_test b where b.name=a.name)
from film_test a

用子查询吧。

你是要新增列还是查询。

你可以用 group by 聚合函数
select name,count(0) from film_test group by name;

如果是临时查询,建议通过 apply 附加列,相对灵活,join 也可以

如果是想永久保留,建议做成物理列,并通过触发器对数据进行实时更新

select count(*) from table_name where column_name = "列名";