im试图使用查询的负数来检查和更新我的mysqldb。我有一个由用户传递的dinamic值,当存储到Db的结果达到极限时,我将更新另一个具有固定值的表。
最困扰我的是以下内容,在THEN之后是否可以更新字段,并更新会话变量?
WHEN(something) >= 50 THEN 50 AND @variable='setted yay'
提前感谢提供信息。
编辑:
好的,我想用你的建议更新我的查询,结果在这里。
SET @ord:='prova';
UPDATE Users, Table2
SET Table2.field= CASE
WHEN(Table2.field + 5) >= 50 AND IF( (Table2.field + 5) >= 50, (@ord='YAY GOOD'), '') IS NOT NULL
THEN 50
WHEN(Table2.field + 5) <= -50 AND IF( (Table2.field + 5) <= -50, (@ord='YAY BAD'), '') IS NOT NULL
THEN -50
ELSE (
CASE
WHEN(Table2.field + 5) > 25 AND IF( (Table2.field + 5) > 25, (@ord='YAY GOOD'), '') IS NOT NULL
THEN (Table2.field + 5)
WHEN(Table2.field + 5) < -25 AND IF( (Table2.field + 5) < -25, (@ord='YAY BAD'), '') IS NOT NULL
THEN (Table2.field + 5)
**ELSE (Table2.field+ 5 AND @ord:='YAY EQUILIBRIUM')**
END
)
END,
users.newalign= @ord
WHERE Table2.id = '338' AND users.id_user = Table2.id
显然,值5只是我用来检查sql-il是否正确执行的一个示例。
但是现在我遇到了两个问题。
1) 它似乎没有以这种方式接受ELSE命令,也许我在某些方面失败了。2) 我无法将@ord传递到新的修改中。当查询运行无错误时,newalign字段每次为空:/
将集合构建为"始终为真"的条件:
CASE
WHEN something >= 50
AND IF(something >= 50, (@variable:='setted yay'), '') IS NOT NULL
THEN 50