0

我试图使用查询的负数来检查和更新我的 mysql 数据库。我有一个用户传递的动态值,当存储到 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 是否正确执行的示例。

但现在我遇到了 2 个问题。

1)它似乎不以这种方式接受 ELSE 命令,也许我在某些事情上失败了。2)我不能将@ord 传递给新的修改。当查询运行时没有错误时,newalign 字段每次都是 Empty :/

4

1 回答 1

1

将集合构建为“始终为真”的条件:

CASE
  WHEN something >= 50
    AND IF(something >= 50, (@variable:='setted yay'), '') IS NOT NULL
  THEN 50
于 2013-07-30T22:56:15.153 回答