php - 根据最近的一个或另一个字段排序

标签 php sql postgresql

如果我有这样的查询

$line_item_status_query = 
"SELECT p.description, 
       p.production_order_id, 
       l.start_user, 
       p.sequence, 
       l.start :: date, 
       l.stop :: date, 
       pr.id, 
       pr.process, 
       pr.process_sequence, 
       pr.caption_in_process, 
       pr.caption_closed, 
       pr.show_to_customer 
FROM   production_order_processes p 
       LEFT JOIN production_order_process_log l 
              ON l.production_order_process_id = p.id 
       LEFT JOIN processes pr 
              ON pr.process_sequence = p.sequence 
WHERE  l.production_order_id = (SELECT id 
                                FROM   production_orders 
                                WHERE 
       sales_order_line_id = '".$sales_order_line_id."') 
ORDER  BY p.sequence";

l.start::date 和/或 l.stop::date 可能为 null 或为空,我该如何执行 ORDER BY 以便我可以根据最近的日期将返回的结果按升序(或降序)排列?

我想用一些条件逻辑替换 p.sequence 的顺序,但我力不从心。

感谢您的帮助!

最佳答案

用案例陈述

 ORDER BY 
    CASE 
    WHEN l.start>l.stop THEN l.start 
    ELSE COALESCE(l.stop, l.start) 
    END 

编辑:这是一个通用的 SQL 解决方案,但如果您的平台支持它,Frank Heikens 的 GREATEST 答案会更简洁。

关于php - 根据最近的一个或另一个字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11558554/

相关文章:

mysql - 在 mysql 中使用 "insert into",#1054 - 字段列表中的未知列

postgresql - 为什么 drop table cascade 不删除 postgresql 中的子表?

php - mysql版本5.5.31加载数据infile语法错误

php - 查找 SQL 子字符串

mysql - 选择分组列的最小值

postgresql - 在函数中调用 now()

postgresql - RDS postgres从9.4升级到9.5,CPU一直卡在100%数小时

php - 未捕获的 ActiveRecord\UndefinedPropertyException codeigniter

php - 使用 jquery 更新值

mysql - GROUP_CONCAT 行到一个字符串