mysql - 总计更新

标签 mysql sql sql-update aggregate

我有一个表更新的问题。遵循表结构:

Table1
  tableid
  ...
  ... 
  productID_1
  productID_2
  productID_3

Table2
  productID
  Total

I've to totalize each product in table2.

For example:

SELECT COUNT(*) as tot, ProductID_1 FROM Table1 GROUP Table1 

然后 UPDATE table2 SET total =..??? (我该怎么做)WHERE productID_1 = ....

希望你能帮助我。

谢谢

最佳答案

您在简化查询方面的选择在很大程度上取决于您使用的产品和版本。但是,应该适用于大多数数据库的解决方案是:

Update Table2
Set Total = (
            Select Count(*)
            From (
                    Select productId_1 As ProductId From Table1
                    Union All Select productId_2 From Table1
                    Union All Select productId_3 From Table1
                    ) As Z
            Where Table2.ProductId = Z.ProductId
            Group By ProductId
            )

这个查询很麻烦的一个很大原因是Table1中的数据没有规范化。相反,您应该考虑 Table1 的结构,例如:

Create Table Table1 (
                    TableId <datatype> not null
                    , ProductId <datatype> not null
                    , Constraint PK_Table1 Primary Key ( TableId, ProductId )
                    )

关于mysql - 总计更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2930114/

相关文章:

sql - 在 SQL 中,UPDATE 总是比 DELETE+INSERT 快吗?

mysql - 通过连接两个表来更新第三个表

mysql - 正确选择 UUID 作为主键的数据类型

Java/Android JSON 请求不更新收到的数据

连接MySQL的C++程序

sql - PostgreSQL 更新未按预期工作

MySQL 将前导数字添加到列中的现有 ID

php - 从数据库中检索的数据忽略换行符

sql - 列的创建者 - SQL Server

mysql - 我的查询没有返回当月工作时间总和的最大值