我想为每个有交易或图库的企业计算点数:
因此,如果该企业有未达成的交易或至少有一个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);
单独说,存储可通过查询轻松提取的数据通常是不好的做法,例如上面的代码。