加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 使用日期数据行的Mysql ORDER BY

发布时间:2020-12-13 13:34:40 所属栏目:PHP教程 来源:网络整理
导读:我有一个像这样的查询: SELECT title,desc,date FROM tablename ORDER BY date ASC,title ASC; 当数据实际有日期时工作正常.问题是,日期提交是可选的,所以我有时会将稿件作为日期,这会产生令人遗憾的效果,即将所有未提交的行放在最前面. 所以,我接着尝试了
我有一个像这样的查询:
SELECT 
 title,desc,date 
FROM 
 tablename 
ORDER BY 
 date ASC,title ASC;

当数据实际有日期时工作正常.问题是,日期提交是可选的,所以我有时会将稿件作为日期,这会产生令人遗憾的效果,即将所有未提交的行放在最前面.

所以,我接着尝试了这个:

SELECT 
 title,date 
FROM 
 tablename 
ORDER BY 
 date DESC,title ASC;

哪种工作,但不是真的 – 所有带日期(非0000-00-00)的项目都按降序列出,然后是所有带有0000-00-00的项目.

我想做的是按日期排序ASC,标题ASC,但只有日期!= 0000-00-00,但如果日期是= 0000-00-00,那么只是ORDER BY标题ASC那些(我想我解释正确).

我能想到的唯一方法是基于非SQL(两个查询,或者,每个查询只填充一个内存数组,然后我使用PHP排序).

是否有可以执行此操作的SQL查询?

您的2查询解决方案很好,您可以使用 UNION命令在SQL中完成所有操作.

第一个查询将针对非零日期,然后查询中为UNION的日期为零.

编辑:类似于:

SELECT * FROM tbl 
   WHERE DATE != '0000-00-00' 
   ORDER BY date ASC 
UNION SELECT * FROM tbl
   WHERE DATE = '0000-00-00'
   ORDER BY title ASC

在这种情况下,这可能不是很有用,但对于复杂的查询,UNION可以派上用场.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读