mysql - 如何在更新查询中使用临时变量?

标签 mysql sql

如何在执行更新语句时设置变量?

我似乎无法理解语法。我正在使用这个 @tp 变量来保存计算结果,它将在 when 条件下使用。

我想要这样的东西:

UPDATE users IU
INNER JOIN activity_stats DAS
    ON (IU.user_id=DAS.for_user_id), set
    @tp:= IU.total_subscription_time - (unix_timestamp()- IU.start_date),
    IU.time_period_left = CASE WHEN @tp > 0 THEN @tp ELSE 0 END,
    IU.used_time = (unix_timestamp() - IU.start_date),
    IU.status = CASE WHEN @tp > 0 THEN 'A' ELSE 'I' END,
    DAS.total_time_used = DAS.total_time_used + IU.used_time 
WHERE IU.time_period_left > 0
  AND IU.status='A'

但它说语法错误: but it's saying the syntax is wrong

最佳答案

你能试试这个吗?

  UPDATE users IU
INNER JOIN activity_stats DAS
    ON (IU.user_id=DAS.for_user_id), 
    IU.time_period_left = CASE WHEN (IU.total_subscription_time - (unix_timestamp()- IU.start_date)) > 0 THEN 
                        (IU.total_subscription_time - (unix_timestamp()- IU.start_date))  ELSE 0 END,
    IU.used_time = (unix_timestamp() - IU.start_date),
    IU.status = CASE WHEN (IU.total_subscription_time - (unix_timestamp()- IU.start_date)) > 0 THEN 'A' ELSE 'I' END,
    DAS.total_time_used = DAS.total_time_used + IU.used_time 
WHERE IU.time_period_left > 0
  AND IU.status='A'

关于mysql - 如何在更新查询中使用临时变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46036315/

相关文章:

mysql - 表中选定行之间的差异之和

sql - 替换列中的最后两个字符

php - 显示数据库中数据的两个或多个指向自动写入文件的链接

mysql - 1366, django 或 collat​​e 或 mysql 中的表的字符串值不正确。

php - 根据另一个表中的存在从表中进行选择

java - 使用mybatis查询db记录列表导致: An unexpected token "IN" was found following

mysql - 无法在 mysql 中应用外键约束

sql - 在 SQL 语句轨中组合 Ruby 变量来查找两个日期之间的天数差异

mysql - 通过 CSV 将 JSON 字符串导入 MySQL。是好是坏?

php - PHP中如何调用存储过程