示例数据:
我有餐 table 订单:
[order_id: 007, state: completed]
[order_id: 123, state: completed]
[order_id: 007, state: failed]
[order_id: 321, state: failed]
[order_id: 111, state: failed]
[order_id: 111, state: failed]
预期输出:
[order_id: 007, state: completed]
[order_id: 123, state: completed]
[order_id: 321, state: failed]
[order_id: 111, state: failed]
我在“订单”表中有许多具有相同 order_id 但状态不同的值。我想收到的是没有那些“失败”状态的订单列表,如果表“订单”中有另一个订单具有相同的 order_id 并且状态不同于“失败”。
我需要这样的东西:
Order.all.group(:state).take_only_first_value_if("COUNT(*) > 1")
最佳答案
使用 postgreSQL ( snippet ):
Order.order("order_id, state = 'failed'").select("DISTINCT ON(order_id) *")
关于ruby-on-rails - 从事件记录分组中只取一个值 - ruby on rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34514882/