【发布时间】:2020-08-03 20:55:46
【问题描述】:
我有带有time 和operation 列的表格。操作列包含create、update和delete值,时间有elixir utc datetime。我想根据日期时间进行排序,如果基于相同的时间戳存在多行,我想首先取 delete 行,然后是 create 和 update。
错误:
1. { time: TIME1, operation: "create" }
2. { time: TIME1, operation: "delete" }
3. { time: TIME1, operation: "update" }
正确
1. { time: TIME1, operation: "delete" }
2. { time: TIME1, operation: "create" }
2. { time: TIME1, operation: "update" }
所以它总是优先考虑delete,而不是create,并且与update相关的值应该最后出现。
如果我们使用以下查询执行此操作,它将始终接受“删除”作为第一个值,但不会对 update 和 create 行进行排序。我很想知道我们是否可以以某种方式扩展此查询中片段的使用,以根据所有 create、update 和 delete 字段进行排序。
|> order_by([e],
asc: e.time,
desc: e.operation == "delete"
)
【问题讨论】: