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
passCURDATE()
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