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

Mysql计算和条件逻辑作为虚拟字段,mysql,Mysql,我有一张桌子叫BookUser。我有两个date字段returned\u on\u date和return\u by\u date。我可以在mysql中作为虚拟字段执行以下计算吗,status if(empty(BooksUser['returned_on_date'])){ if(date('Y-m-d') > BooksUser['return_by_date']){ BooksUser['status'] = 1; } else { B

我有一张桌子叫BookUser。我有两个
date
字段
returned\u on\u date
return\u by\u 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;
    }
}
选择
如果(isnull(在日期返回),
如果(CURDATE()<在日期前返回日期,1,2),
IF(返回日期>返回日期,3,4)
)作为身份
来自图书用户
基本上这就是正在发生的事情。正如注释所建议的那样,
IF
是我必须使用的,在我的例子中,技巧是使用嵌套的IF

若函数采用3个参数条件,则结果为真,结果为假


您是否考虑过使用IF语句。这里有一个类似的问题,SQL中有一个
IF
语句,并且有字符串和日期函数。我建议您开始阅读这些文档。你应该在试过之后才在这里问这样的问题。然后你应该问一个你在尝试中遇到的具体问题。这里你基本上是在问:有人能帮我做我的工作吗?@arkascha当然感谢你让我知道if声明。我将删除这个问题,并询问是否needed@Tommo1977谢谢这是如此简单,现在我觉得为什么我浪费了这么多的五月天在它。但我也不知道mysql是否有。谢谢。建议任何网站/书籍了解更多关于MySQL的信息。您能解释一下您的答案吗?
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