Php mysql情况下的排序

Php mysql情况下的排序,php,mysql,Php,Mysql,试试这个: WHEN expiry_date_case > CURDATE() THEN 3 expiry_date_case ASC WHEN expiry_date_case IS NULL THEN 2 WHEN expiry_date_case < CURDATE() THEN 1 expiry_date_case DESC 选择* 来自案例研究 逐案订购 当到期日\u case>CURDATE()时,则为3 当失效日期为空时,则为2 当到期日小于CURDATE()时

试试这个:

WHEN expiry_date_case > CURDATE() THEN 3 expiry_date_case ASC

WHEN expiry_date_case IS NULL  THEN 2

WHEN expiry_date_case < CURDATE() THEN 1 expiry_date_case DESC
选择*
来自案例研究
逐案订购
当到期日\u case>CURDATE()时,则为3
当失效日期为空时,则为2
当到期日小于CURDATE()时,则为1
结束描述,
ABS(DATEDIFF(CURDATE(),到期日\案例))
所有记录:

  • expiration\u date\u case
    pass
    CURDATE()
  • 然后是
    NULL
    记录,然后是
  • 具有
    到期日\u case
    的记录
  • [1]
    记录将按升序排列(在它们自己的组内),而组
    [3]
    记录将按降序排列


    这里是一种更通用的排序形式,您可以使用多种条件进行排序,而不是使用日期

    SELECT *
    FROM case_study
    ORDER BY CASE 
                WHEN expiry_date_case > CURDATE() THEN 3 
                WHEN expiry_date_case IS NULL  THEN 2
                WHEN expiry_date_case < CURDATE() THEN 1 
             END DESC,
             ABS(DATEDIFF(CURDATE(), expiry_date_case)) 
    
    选择*
    来自案例研究
    订购人
    案例
    当到期日\u case>CURDATE()时,则为3
    当失效日期为空时,则为2
    当到期日小于CURDATE()时,则为1
    结束描述,
    当到期日>CURDATE()然后到期日结束时,
    到期时的案例\u日期\u案例
    您能给我们一些输入和输出示例吗?
    SELECT *
    FROM case_study
    ORDER BY CASE 
                WHEN expiry_date_case > CURDATE() THEN 3 
                WHEN expiry_date_case IS NULL  THEN 2
                WHEN expiry_date_case < CURDATE() THEN 1 
             END DESC,
             ABS(DATEDIFF(CURDATE(), expiry_date_case)) 
    
    SELECT *
    FROM case_study
    ORDER BY 
     CASE 
       WHEN expiry_date_case > CURDATE() THEN 3 
       WHEN expiry_date_case IS NULL  THEN 2
       WHEN expiry_date_case < CURDATE() THEN 1 
    END DESC,
    case when expiry_date_case > CURDATE() then expiry_date_case end,
    case when expiry_date_case < CURDATE() then expiry_date_case end desc