简单的说:我有一个包含 2 列的表:一个是用户名,另一个是昵称。我有另一个表,其中有 2 列:一个是用户名,另一个是 countNicknames。

我希望 countNicknames 包含每个用户拥有的昵称数量(每当我向 table1 插入新昵称时,table2.countNicknames 下的值将自动更新。

您能否写下如何构建第二个表来引用第一个表?

有帮助吗?

解决方案

为什么不指望当你需要的价值?

其他提示

  

我想countNicknames包含昵称每个用户有(每当我插入一个新的昵称的表1,table2.countNicknames下的值将自动更新。

的数量

这实际上是什么的视图都行。

CREATE OR REPLACE VIEW user_nickname_count AS
    SELECT t.username,
           COUNT(*) 'countNicknames'
      FROM TABLE t
  GROUP BY t.username

一个视图的看起来的像一个表,所以你CAH如果需要连接到这里。和唯一的开销是,它有效地仅仅是一个SELECT查询正在运行 - 的值被计算上的需求,而不必设置触发

有关的观点更信息,请参阅文档

嗯,@Lasse 的建议更好,但是......有 另外两个 另一种选择...

  1. MySql 有触发器吗?如果是这样,那么您将在第一个表上添加一个插入、更新、删除触发器,每次从第一个表中插入、更新或删除记录时,该触发器都会更新(或根据需要插入或删除)第二个表的 CountNickNames 属性。 。

    在nicknamecounttt上创建触发nicknamecounttrig,以插入,更新,删除为更新nct set countnicknames =(select count(select count)()从firstTable where name = nct.name)从nicknamecounttable nct中的名称中(从插入的联盟中选择独特的名称从已删除中选择独特的名称) - --------------------------------------------------------------------- --------------------------------------插入nicknamecounttable(名称,countnicknames)选择名称,count(count)()从不存在的第一台ft(从nicknamecounttable中选择 * name = ft.name) - -------这是可选的---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---删除nicknamecounttable在其中countnicknames = 0

  2. MySql 是否有索引视图(或某些等效视图)?显然不是 - 所以不用介意这个选项....

scroll top