我想为每个商家计算交易或画廊的积分:
因此,如果该商家没有空白交易,或者至少有一个库,则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
但是我收到了这个错误: 你不能指定表业务进行更新
如何解决这个问题?
答案 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);
另一方面,通常不好的做法是存储可以通过查询轻松提取的数据,例如上述内容。