gpt4 book ai didi

MySQL:计算列

转载 作者:可可西里 更新时间:2023-11-01 07:46:13 29 4
gpt4 key购买 nike

我刚开始使用 SQL,遇到了一个问题。

在我的数据库中,我目前有两个表,Cinemas 和 Theatres。我正在尝试在 Cinemas 表中创建一个列“# of Theatres#”,该列使用与 Cinemas 表中的 Cinema 相同的 CinemaID(外键)来计算 Theatres 表中的剧院数量。我让它作为一个SQL查询:

SELECT cinemas.CinemaID,Town,COUNT(*) AS '# of Theatres'
FROM cinemax.cinemas,cinemax.theatres
WHERE cinemas.CinemaID=theatres.CinemaID
GROUP BY cinemas.CinemaID;

但想知道是否可以在 Cinemas 表中创建一个列,自动执行上述查询并将值插入每一行。

这将是一个非常小的数据库,所以速度不是真正的问题,我只是想学习如何制作这样一个计算列(如果可能的话)。

最佳答案

计算列通常意味着您可以计算每行的值。 MySQL 不支持,但 SQL Server 支持。例如,要永久存储两列的总和:

create table Table1 (a int, b int, c as a+b persisted)

但是,您希望存储一个聚合,即一组行的值。 MySQL 和 SQL Server 不支持聚合的物化 View ,但 Oracle 支持:

create table Table1 (a int, b int);

create materialized view View1 as
select a
, count(*) as Cnt
from Table1
group by
a;

然而,对于 MySQL,您可以做的最接近的事情是定期填充表的 cronjob:

truncate table Table1Summary;
insert Table1Summary (a, Cnt) select a, count(*) from Table1;

可以像物化 View 一样查询表;它会一样快,但不能保证是最新的。

关于MySQL:计算列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5422729/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com