如何使用select更新查询? MySQL的

时间:2015-06-11 16:37:38

标签: mysql sql

我想为每个商家计算交易或画廊的积分:

因此,如果该商家没有空白交易,或者至少有一个库,则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

但是我收到了这个错误: 你不能指定表业务进行更新

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我认为你有一个错字。 我想你应该:

UPDATE `business`.businessTable SET 

而不是

UPDATE `business`  businessTable SET 

如果在查询中定义表时使用模式,则需要用点(。)分隔它们。

也许这不是唯一的问题,但这是第一个浮现在脑海中的问题。

答案 1 :(得分:0)

无需从更新表中单独选择。试试这个(未经测试):

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

另一方面,通常不好的做法是存储可以通过查询轻松提取的数据,例如上述内容。