如何在mysql中对创建和更新日期进行排序
在我的数据库中,有这样一个表如何在mysql中对创建和更新日期进行排序,mysql,sql,Mysql,Sql,在我的数据库中,有这样一个表 student ======= name create_date timestamp current_timestamp update_date timestamp null 更新日期默认为空,只有在有更新时,更新日期才会设置时间戳 问题是,我想按日期排序记录,如果有更新日期,我想使用更新日期,如果更新日期为空,则使用创建日期 如何将查询从简单更改为 Select name from student order_by create_date desc 来完成我
student
=======
name
create_date timestamp current_timestamp
update_date timestamp null
更新日期默认为空,只有在有更新时,更新日期才会设置时间戳
问题是,我想按日期排序记录,如果有更新日期,我想使用更新日期,如果更新日期为空,则使用创建日期
如何将查询从简单更改为
Select name from student order_by create_date desc
来完成我的案子
非常感谢您可以使用表达式返回指定的值 ANSI标准表达式是
CASE WHEN update_date IS NOT NULL THEN update_date ELSE create_date END
在MySQL中,我们有几个函数可以返回相同的结果:
IF(update_date IS NOT NULL, update_date, create_date)
或
或
使用类似ORDER BY子句中的表达式
ORDER BY IFNULL(update_date,create_date) DESC
另一方面,我建议将update_date设置为首次创建_date,并在每次更新时对其进行更新。您以前是否使用过codeigniter,$this->db->order_by('ifnull(update_date,create_date)','DESC');导致sql错误,您知道如何转义字段名吗?感谢CodeIgniter,我认为您可以传递自定义字符串,但我认为
DESC
关键字是字符串的一部分,而不是单独的参数。Try:->order_by('IFNULL(update_date,create_date)DESC')代码>
COALESCE(update_date,create_date)
ORDER BY IFNULL(update_date,create_date) DESC