【发布时间】:2016-08-17 12:39:43
【问题描述】:
我的 MYSQL v5.7.9 数据库中有三个表:
world1:player_id | city_id | wood_max_level | wheat_max_level | gold_max_level | meat_max_level
world2:player_id | city_id | wood_max_level | wheat_max_level | gold_max_level | meat_max_level
升级中: world | player_id | city_id | building | level
内部升级:building包含一个字符串:'wood_max_level'、'wheat_max_level'、'gold_max_level'或'meat_max_level'world还包含一个字符串:'世界1'或'世界2'。
我要做的是从升级中选择building 和level。
然后我想根据 world 包含的内容更新 world1 或 world2,并将 level 设置为 building 中包含的列名。
这是一个例子
我在upgrading 里面有一排看起来像这样:
world | player_id | city_id | building | level
'world1' | 190 | 1 | 'wood_max_level'| 2
执行查询后,我会影响表world1,因为它被设置在upgrading 内作为列world。 world1 会是这样:
player_id | city_id | wood_max_level | wheat_max_level | gold_max_level | meat_max_level
190 | 1 | 2 | 0 | 0 | 0
我已经有一个可用的“PHP 版本”。基本上我做第一个查询然后返回一个数组和 foreach 元素我做另一个查询。
编辑
SELECT
@world := world,
@building := building,
@level := level FROM upgrading;
UPDATE @world
SET @building = @level;
上面我定义了三个用户变量(它们的值取自表upgrading。在第二条语句中,我试图更新@world 中包含的世界(world1 或world2)。在上面的例子看起来像这样:@world = 'world1', @building = 'wood_max_level', @level = 2
最后一行不正确,因为@world 是一个字符串。我可以让我工作吗?
【问题讨论】:
-
sql还不够!请用实际的 DBMS(供应商和版本)标记 -
样本数据和预期结果对您的解释很有帮助。
-
我已添加:WAMP 上的 MySQL v5.7.9
-
子查询。 UPDATE your_table SET var=(SELECT var2 from another_table WHERE ....) WHERE.....