【问题标题】:Function in web2py groupby clauseweb2py groupby 子句中的函数
【发布时间】:2017-04-22 12:48:52
【问题描述】:

我想将 groupby 子句中的所有 NULL 行放在不同的组中。在 SQL 中,这类似于

GROUP BY IFNULL(`Y`, `X`); (见GROUP BY - do not group NULL)。

如何在 web2py 中做到这一点?

【问题讨论】:

    标签: sql grouping web2py


    【解决方案1】:

    在许多情况下,您可以将 SQL 字符串传递给 DAL 方法,因此在这种情况下,类似于:

    grouped_ids = 'GROUP_CONCAT(`id`)'
    rows = db(query).select(db.mytable.myfield, grouped_ids,
                            groupby='IFNULL(`myfield`, `id`)')
    print rows[0][grouped_ids]
    

    myfield 为空时,上面将使用id 值(这是唯一的)而不是myfield

    【讨论】:

    • 完美,谢谢。不过,我想如果像在那个 SO 示例中那样尝试使用 DAL 执行 GROUP_CONCAT() ,我可能会被卡住?
    • 不,您也可以使用GROUP_CONCAT -- 请参阅更新后的答案。
    • 再次感谢。有没有办法重命名返回行中的“grouped_ids”列,使其不被称为“GROUP_CONCAT(id)”?
    • 有很多方法,但涉及一些复杂性。根据您打算对输出执行的操作,可能会有更简单的替代方案(例如,将原始 SQL 存储在变量中并使用它来访问该字段,如上所述)。如果您打开一个新问题并准确解释您需要对结果做什么,这可能是最好的。
    猜你喜欢
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 2013-07-21
    • 1970-01-01
    相关资源
    最近更新 更多