MySQL: Computed Column

前端 未结 4 1057
再見小時候
再見小時候 2020-12-03 16:42

I\'m just started using SQL and ran into a problem.

In my database, I presently have two tables, Cinemas and Theatres. I\'m trying to create a column \"# of Theatre

4条回答
  •  不思量自难忘°
    2020-12-03 17:09

    A computed column normally means a value you can calculate per row. MySQL does not support that, but SQL Server does. For example, to store the sum of two columns permanently:

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

    However, you're looking to store an aggregate, that is, a value for a group of rows. MySQL and SQL Server don't support materialized views with an aggregate, but Oracle does:

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

    With MySQL however, the closest you can do is a cronjob that periodically populates a table:

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

    You can query the table like a materialized view; it will be as fast, but not guaranteed to be up to date.

提交回复
热议问题