1

我有 UPDATE SQL 语句(如 Dibi 引擎)来更改用户积分和日期。需要一个声明。问题是,我不知道如何在 SQL 级别(不是 PHP)的一个 SQL 查询中使用和检查IF 语句

所以我想要的是,如果paid_to IS NULL,它将是:

dbIndex::query("UPDATE s3n_users SET points = %i, paid_to = DATE_ADD(paid_to, INTERVAL $points MONTH) WHERE id_user = %i", $points, $id_user)->result();

否则,如果paid_to IS NOT NULL,它将是:

dbIndex::query("UPDATE s3n_users SET points = %i, paid_to = DATE_ADD(CURDATE(), INTERVAL $points MONTH) WHERE id_user = %i", $points, $id_user)->result();

我知道,我会在 PHP 中解决这个问题,但是 SQL 中的一条语句当然会更快。因为在 PHP 中,我们必须在检查 NULL 或 NOT NULL 之前使用 SELECT。我们为什么要另外做一件事?

4

1 回答 1

3
dbIndex::query("UPDATE s3n_users SET points = %i, 
    paid_to = IF(paid_to IS NULL,
        DATE_ADD(paid_to, INTERVAL $points MONTH),
        DATE_ADD(month, 1, GETDATE())) 
    WHERE id_user = %i", $points, $id_user)->result();

有关详细信息,请参阅http://dev.mysql.com/doc/refman/5.6/en/control-flow-functions.html#function_if 。

于 2013-08-26T22:31:47.610 回答