有没有办法让一列等于另一个表中所有行的计数,其中 id = 当前行中的一列?
例如。
- table1 有以下列:id,count
- table2 有列 id, table1_id
我希望 table1.count 自动填充 table2 中的行数,其中table2.table1_id = table1.id
(它的父子有一个关系)。
显然我可以用 php 做到这一点,我只是认为这比每次页面加载时都必须不断地使用 php 重新计算要快。谢谢。
有没有办法让一列等于另一个表中所有行的计数,其中 id = 当前行中的一列?
例如。
我希望 table1.count 自动填充 table2 中的行数,其中table2.table1_id = table1.id
(它的父子有一个关系)。
显然我可以用 php 做到这一点,我只是认为这比每次页面加载时都必须不断地使用 php 重新计算要快。谢谢。
假设table1.id
是唯一键,您可以执行以下操作:
REPLACE INTO table1 (id, count)
SELECT table1_id, COUNT(*)
FROM table2
GROUP BY table1_id
使用 view 和 table table1_data
,您可以这样做:
CREATE VIEW table1 AS
SELECT table1_data.*, COUNT(*) AS count
FROM table1_data, table2
WHERE table1_data.id = table2.table1_id
GROUP BY table1_data.id
这将从 中获取所有数据table1_data
,按照您的描述添加一列count
,并将结果显示为在大多数情况下可以像表格一样使用的视图。
当然,如果您的数据库引擎支持触发器,您可以使用触发器来实现这种“自动”效果。您需要在 table_data 上建立 2 个触发器,onInsert() 和 onDelete()。