php - 数据库条目被删除

标签 php mysql sql

我有下面的脚本,通过 cronjob 清理 session 。

我想清理超过 40 分钟不活动的 session 。 但如果他们有一个特定的 user_id,他们应该持续 1 天。

这行不通,我不明白为什么。有时即使他们有 user_id,他们也会被删除。

DELETE FROM session
WHERE
    CASE
        WHEN
            user_id IN (3,4,5,6,7)
        THEN
            expiry < DATE_SUB(NOW(), INTERVAL 1 DAY)
        ELSE
            expiry < DATE_SUB(NOW(), INTERVAL 40 MINUTE)
    END

user_id的数据类型为intexpiry的数据类型为datetime

最佳答案

将比较移到外面而不是在 case 内进行:

DELETE FROM session
  WHERE expiry < CASE
    WHEN user_id IN (3,4,5,6,7) THEN DATE_SUB(NOW(), INTERVAL 1 DAY)
    ELSE DATE_SUB(NOW(), INTERVAL 40 MINUTE)
  END

关于php - 数据库条目被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39032622/

相关文章:

php - Laravel 查询构建器条件与当前查询使用何时

php - 在 WAMP 上的 ADOdb 中调用未定义的函数 mysql_connect

mysql - INSERT IGNORE 忽略时间的同时插入日期

python - python中使用mysql报错1064

sql - 如何获取hive中所有列的总和

asp.net - Oracle中Link DB参数问题

php - PHP 和 MYSQL 中的 IM 聊天系统?

php - php、wamp、windows 中的 SSH2

c# - SQL查询选择谜题

mysql - 合并这两个查询