【问题标题】:Is it possible to have a generated column based on another table?是否可以基于另一个表生成列?
【发布时间】:2021-03-23 12:04:22
【问题描述】:

我想知道是否可以通过使用 group by 查询来创建生成的列。比如下图,是否可以根据外键匹配的资产数量来生成设备的数量?

【问题讨论】:

  • 可能不会(至少在我熟悉的任何数据库中都不会),但您可以轻松编写查询来执行此操作。
  • 不作为表中的具体化列。但是您可以从检索表列和计算列的查询中创建一个视图。

标签: sql database-design count subquery sql-view


【解决方案1】:

你不能用计算列做到这一点。如果您想存储和维护此类信息,则需要为表 asset 上的每个 DML 操作触发代码,这使得事情变得相当复杂。

另一方面,您可以创建一个视图:

create view v_equipment
select e.*, 
    (select count(*) from asset a where a.equipment_id = e.equipment_id) as quantity
from equipment e

这为您提供了始终最新的数据视角。当您需要quantity 信息时,您可以直接查询视图而不是表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-11
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2012-08-23
    • 2020-12-20
    • 1970-01-01
    相关资源
    最近更新 更多