我想为每个有交易或图库的企业计算点数:

因此,如果该企业有未达成的交易或至少有一个Gallery,则business_data_count应该为2。

这是我尝试过的:

UPDATE `business`  businessTable SET
            business_data_count
            =
            sum(
                            (
                            SELECT
                                    CASE
                                         WHEN count(*)>= 1 then count(*)
                                         ELSE 0
                                     END as points
                            FROM gallery WHERE bussId=businessTable.bussId
                            )

                            +

                            (
                            SELECT
                                  case
                                      WHEN deal!='' then 1
                                      ELSE 0
                                  end
                            FROM business WHERE  bussId=businessTable.bussId
                            )
             where 1


但我得到这个错误:
您不能指定表业务进行更新

如何解决呢?

最佳答案

无需从更新表中进行单独选择。尝试以下操作(未试用):

UPDATE business
   SET business_data_count = (deal != '')
       + (SELECT COUNT(*)
            FROM gallery
           WHERE bussId = business.bussId);


单独说,存储可通过查询轻松提取的数据通常是不好的做法,例如上面的代码。

10-05 17:46