我在表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上运行的命令。我想弄清楚的是,是否有一些选项可以动态地将单元格的值更改为我上面描述的值。
答案 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很好,那么速度非常快。如果将其写入另一个表,则必须提出请求以获取第二个表的结果。所以我认为你可以直接做到。
如果您遇到一些性能问题,还有其他一些可能性,例如Triggers或Stored Procedures来计算该结果,并将它们保存在内存表中以获得更好的性能。