我搜索了带有日期的文章。在 MySQL 中是:

Article:
id | title
1  | first
2  | second
3  | third
4  | fourth

日期文章:
id | article_id | from       | to
1  |     1      | 10-10-2010 | 11-11-2010
2  |     2      | 11-10-2010 | 12-12-2010
3  |     1      | 13-12-2010 | 12-01-2012
4  |     3      | 11-11-2012 | 12-12-2012
5  |     4      | 02-02-2013 | 02-02-2014

我想获取所有带有日期的文章并按可用性排序。

例如,我想获取所有文章并按日期从 12-10-2011 到 12-01-2012 进行排序

这应该返回我:
  • 首先(在范围从到 - DatesArticle.id = 3)
  • 第三个(在范围从到 - DatesArticle.id = 4)
  • 秒(不在范围内)
  • 第四个(不在范围内)

  • 这可以使用 SQL 或 SQL 和 PHP 吗?如果是,如何?

    最佳答案

    使用 CASE 子句,例如:

    SELECT * FROM DatesArticle
    ORDER BY CASE
    WHEN id=3 AND CURRENT_DATE()<=from and to < CURRENT_DATE()>=to THEN 1
    WHEN <condition_2> THEN 2
    etc...
    ELSE <any other condition>
    END
    

    并不是说上面的内容会按原样工作,但它会给你和想法。如果您添加您尝试过的查询的示例,或者您如何构建 where 子句,这将有助于获得更好的答案。

    关于php - 按是或否排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11361657/

    10-11 22:27
    查看更多