我刚开始使用 SQL 并遇到了问题。
在我的数据库中,我目前有两个表,Cinemas 和 Theatres。
我正在尝试在 Cinemas 表中创建一个列“# of Theatres#”,该列计算与 Cinemas 表中的 Cinemas 具有相同 CinemaID(外键)的 Theatres 表中的 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:计算列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5422729/