数据如图,一共有4个Documentary和2个Horror,怎么得到红圈内的列。
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 = "列名";