如果我有这样的查询
$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/