用于显示第二个表中条目数的动态值

时间:2016-05-15 21:11:50

标签: mysql dynamic count

我在表A中有多个条目,并希望在表B的列中显示条目数。有没有办法创建一个显示表中条目数的动态单元格内容?

我是MySQL的初学者,到目前为止还没有找到办法。

示例表A:

+----+------+------------+
| id | name | birthday   |
+----+------+------------+
|  1 | john | 1976-11-18 |
|  2 | bill | 1983-12-21 |
|  3 | abby | 1991-03-11 |
|  4 | lynn | 1969-08-02 |
|  5 | jake | 1989-07-29 |
+----+------+------------+

表B中我想要的是:

+----+------+----------+
| id | name | numusers |
|  1 | tblA |        5 |
+----+------+----------+

在我的实际数据库中没有递增ID,所以只取最后一个值是行不通的 - 如果这是一个解决方案。

如果MySQL无法处理这个问题,那么选项就是在我的服务器上创建某种类型的cronjob,读取行数并将它们写入该单元格。我知道怎么做 - 只是检查是否有另一种方式。

我不是在寻找在mysql-console上运行的命令。我想弄清楚的是,是否有一些选项可以动态地将单元格的值更改为我上面描述的值。

2 个答案:

答案 0 :(得分:1)

您可以创建一个可以为您提供此信息的视图。此视图的SQL受an answer to a similar question启发:

CREATE VIEW table_counts AS 
SELECT table_name, table_rows
  FROM information_schema.tables 
 WHERE table_schema = '{your_db}';

视图将包含您所说的单元格。如您所见,它只是现有表的过滤器,因此您可能会认为此表 information_schema.tables 是您问题的答案。

答案 1 :(得分:0)

您可以直接使用COUNT()执行此操作,例如SELECT COUNT(*) FROM TblA您可以从该表中获取所有行。如果你的IDX很好,那么速度非常快。如果将其写入另一个表,则必须提出请求以获取第二个表的结果。所以我认为你可以直接做到。

如果您遇到一些性能问题,还有其他一些可能性,例如TriggersStored Procedures来计算该结果,并将它们保存在内存表中以获得更好的性能。