Mysql计算和条件逻辑作为虚拟字段

时间:2015-01-24 12:06:47

标签: mysql

我有一个名为BooksUser的表。我有两个date字段returned_on_datereturn_by_date。我可以在mysql中将以下计算作为虚拟字段status进行。

if(empty(BooksUser['returned_on_date'])){
    if(date('Y-m-d') > BooksUser['return_by_date']){
        BooksUser['status'] = 1;
    } else {
        BooksUser['status'] =  2;
    }
} else {
    if(BooksUser['returned_on_date'] > BooksUser['return_by_date']) {
        BooksUser['status'] = 3;
    } else {
        BooksUser['status'] = 4;
    }
}

1 个答案:

答案 0 :(得分:0)

select 
    IF(isnull(returned_on_date), 
        IF(CURDATE() < return_by_date, 1, 2), 
        IF(returned_on_date > return_by_date, 3, 4)
    ) as status 
from books_users

基本上这就是发生的事情。正如评论所建议的IF是我必须使用的,在我的案例中,技巧是使用嵌套的IF。

IF函数需要3个参数条件,真实的结果,错误的结果。

http://dev.mysql.com/doc/refman/5.0/en/if.html