gpt4 book ai didi

php - MySQL 嵌套 CASE 错误我需要帮助吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:36 27 4
gpt4 key购买 nike

我想在这里做的是:如果 $done 中标识的表 todo 中的记录在 recurinterval 列中有一个值,那么那么重置 date_scheduled 列,否则只需将这些记录的 status_id 列设置为 6。

这是我从 mysql_error() 得到的错误 ...

您的 SQL 语法有误;检查与您的 MySQL 服务器版本对应的手册,了解在第 2 行的“CASE recurinterval != 0 AND recurinterval IS NOT NULL THEN SET date_sche”附近使用的正确语法

我怎样才能让这个声明生效?

UPDATE todo 
CASE recurinterval != 0 AND recurinterval IS NOT NULL THEN
SET date_scheduled = CASE recurunit
WHEN 'DAY' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval DAY)
WHEN 'WEEK' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval WEEK)
WHEN 'MONTH' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval MONTH)
WHEN 'YEAR' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval YEAR)
END
WHERE todo_id IN ($done)
ELSE
SET status_id = 6 WHERE todo_id IN ($done)
END

在我像上面那样修改之前,以下 mySQL 语句工作得很好。

UPDATE todo 
SET date_scheduled = CASE recurunit
WHEN 'DAY' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval DAY)
WHEN 'WEEK' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval WEEK)
WHEN 'MONTH' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval MONTH)
WHEN 'YEAR' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval YEAR)
END
WHERE todo_id IN ($done)
AND recurinterval != 0
AND recurinterval IS NOT NULL

最佳答案

问题是您正在尝试做一些 afaik 仅使用一个查询不可能完成的事情。您想要根据 recurinterval 字段的值更新 2 列中的 1 列。所以基本上你应该把它分成 2 个查询,第一个就是你的那个。

UPDATE todo 
SET date_scheduled = CASE recurunit
WHEN 'DAY' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval DAY)
WHEN 'WEEK' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval WEEK)
WHEN 'MONTH' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval MONTH)
WHEN 'YEAR' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval YEAR)
END
WHERE todo_id IN ($done)
AND recurinterval != 0
AND recurinterval IS NOT NULL

第二个将用于其他行:

UPDATE todo 
SET status_id = 6
WHERE todo_id IN ($done)
AND (recurinterval = 0
OR recurinterval IS NULL)

如果您运行这些查询(您很可能希望在事务中运行它们,以便在其中一个查询期间发生错误时可以回滚更改),您应该会得到想要的结果。

关于php - MySQL 嵌套 CASE 错误我需要帮助吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2536217/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com