MySQL数据库使用另一个表中的行数计算一个表中单元格的值

MySQL数据库使用另一个表中的行数计算一个表中单元格的值,mysql,sql,database,Mysql,Sql,Database,我有两个数据库表,在其中一个表中,我希望其中一个单元格等于另一个表中的行数乘以一个特定的数字,例如2000 例如,如果表1中有10行,我希望表2中的一个单元格是(2000 x 10)的和 我怎样才能做到这一点 我正在努力实现的目标: 我想做的是为一家虚拟公司创建一种银行数据库。数据库中的一个表将从网站上的表单中收集值,然后将这些值放入该表中,并显示为每个“员工”的数据,例如利润、成本等 第二个表将汇总“员工”以创建整个公司的数据 例如 在“employees”表中可能有一列名为“fuel co

我有两个数据库表,在其中一个表中,我希望其中一个单元格等于另一个表中的行数乘以一个特定的数字,例如2000

例如,如果表1中有10行,我希望表2中的一个单元格是(2000 x 10)的和

我怎样才能做到这一点


我正在努力实现的目标:

我想做的是为一家虚拟公司创建一种银行数据库。数据库中的一个表将从网站上的表单中收集值,然后将这些值放入该表中,并显示为每个“员工”的数据,例如利润、成本等

第二个表将汇总“员工”以创建整个公司的数据

例如

在“employees”表中可能有一列名为“fuel cost”。
在公司表格中有一个名为“总燃油成本”的列,该列等于所有员工燃油成本的总和,然后将显示在网站上。

您可以创建一个临时表格,并使用count函数获取行数:

CREATE TEMPORARY TABLE sum_table ENGINE=MyISAM  ( SELECT SUM(2000 * COUNT(*)) `total` FROM `other_table`);

现在您可以查询sum_table

您可以创建一个临时表,并使用count函数获取行计数:

CREATE TEMPORARY TABLE sum_table ENGINE=MyISAM  ( SELECT SUM(2000 * COUNT(*)) `total` FROM `other_table`);

现在你可以查询sum_表了

我不知道你的问题是否明白。但这是你想要的吗

Update table
    set columnName = SUM(2000 * (select Count(*) from table2))

我不太明白你的问题。但这是你想要的吗

Update table
    set columnName = SUM(2000 * (select Count(*) from table2))

您可以通过
触发器
或过程SQL(函数、存储过程)实现自动更新值。某些RDBMs具有代理,允许您在运行过程时安排时间

MySQL
中的触发器示例如下:

CREATE TRIGGER my_table_trig AFTER INSERT ON my_table
  FOR EACH ROW
  BEGIN
    UPDATE my_table_total SET total_rows = (SELECT count(*) FROM my_table)*2000;
  END;

您可以通过
触发器
或过程SQL(函数、存储过程)实现自动更新值。某些RDBMs具有代理,允许您在运行过程时安排时间

MySQL
中的触发器示例如下:

CREATE TRIGGER my_table_trig AFTER INSERT ON my_table
  FOR EACH ROW
  BEGIN
    UPDATE my_table_total SET total_rows = (SELECT count(*) FROM my_table)*2000;
  END;

听起来你好像在尝试使用MySQL作为电子表格,这确实是错误的方法。只需从表2中查询
选择count(*),然后在应用程序中乘以2000(如果需要)

我的回答是:“你问错了问题。重新思考你想做什么。”

根据您修改后的问题,我的意思是:不要为了保持最新的摘要而不断更新额外的表。没有这个必要。只需从detail_table
(可能带有
WHERE
条件或类似条件)执行类似于
select count(*)的操作,即可在web应用程序中查看摘要数据

这是一种比维护一个额外的表更简单的获取所需信息的方法。如果详细信息表中的数据量太大,以至于每次需要总计时运行
COUNT(*)
或类似的查询都会对性能造成极大的拖累,那么您应该只保留摘要表


换句话说,让数据库完成排序和汇总的工作。

听起来你试图将MySQL用作电子表格,这确实是错误的方法。只需从表2中查询
选择count(*),然后在应用程序中乘以2000(如果需要)

我的回答是:“你问错了问题。重新思考你想做什么。”

根据您修改后的问题,我的意思是:不要为了保持最新的摘要而不断更新额外的表。没有这个必要。只需从detail_table
(可能带有
WHERE
条件或类似条件)执行类似于
select count(*)的操作,即可在web应用程序中查看摘要数据

这是一种比维护一个额外的表更简单的获取所需信息的方法。如果详细信息表中的数据量太大,以至于每次需要总计时运行
COUNT(*)
或类似的查询都会对性能造成极大的拖累,那么您应该只保留摘要表


换句话说,,让数据库完成排序和汇总工作。

但我希望它在向其他表添加更多行时自动编辑值。您可以基于此select语句将
其他表
创建为临时表。或者您可以在
上放置触发器以更新
其他表
。就我个人而言,我只是在运行中计算值:
从表中选择2000*COUNT(*)
。临时表与普通表有什么区别,因为我还想在这个表中存储其他内容以及这个值对不起,我应该更清楚:当我说“在运行中计算”时我的意思是根本不必麻烦有一个
其他表
——只要在需要的时候查询号码就行了。如果您有非常大的表,这将不是一个好主意。但是我希望它在向另一个表添加更多行时自动编辑值。您可以基于此select语句创建
other\u table
作为临时表。或者您可以在
table
上放置触发器以更新
other\u table
。就我个人而言,我只是在运行中计算值:
从表中选择2000*COUNT(*)
。临时表与普通表有什么区别,因为我还想在这个表中存储其他内容以及这个值对不起,我应该更清楚:当我说“在运行中计算”时我的意思是根本不必麻烦有一个
其他表
——只要在需要的时候查询号码就行了。如果你有非常大的表,这不是一个好主意。阅读标签,RDBMS是明确指定的。这也应该是一个注释,而不是答案。我在键入答案时没有看到标记。@Danbyization我没有
PHPmyAdmin
,但我