【问题标题】:MySQL Advanced Ordering combining two queriesMySQL 高级排序结合两个查询
【发布时间】:2020-02-26 14:46:58
【问题描述】:

我使用两个查询获取以下数据,然后使用UNION ALL 进行组合:

  • 第一部分:所有IN 事件使用 SideA 然后 EventTime 排序
  • 第二部分:所有OUT事件的排序方式相同

但是,我希望最终结果如下:

  • 在对应的 EventTime 中插入 OUT 事件,其中 out.SideB=in.SideA
  • 您会注意到,对于每个 OUT 事件,都有一个对应的 IN 事件,但有时情况并非如此(以橙色突出显示的情况)。
  • 另外,时间可能不是 100% 相同,因此不能用于匹配。

所以最终的结果应该是这样的:

请告知如何进行。

PS:请在GoogleSheetGoogleSheet中找到我的示例中使用的数据

【问题讨论】:

    标签: mysql sql date sql-order-by


    【解决方案1】:

    我正在考虑一个order by 子句,例如:

    order by 
    
        -- if event type is 1, order by SideA, else order by SideB        
        case when EventType = 'IN' then SideA else SideB end,
    
        -- then event time
        EventTime,
    
        -- `Out` goes before `IN` if there are several events at the same time
        EventType desc
    

    【讨论】:

    • 伙计,这太完美了。我见过类似的解决方案,但我无法重现一个,因为我不明白它是如何工作的。如果可能的话,请您添加一个详细的解释,以便anwser在其他情况下提供更好的帮助。
    • @Enissay:欢迎!这是条件排序,我在答案中添加了更多信息。
    • 谢谢。我以前以简单的方式使用过它,但这种组合让我感到困惑。感谢您的额外解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多