SQLAlchemy:group_concat(case when ...)可能吗?

Posted

技术标签:

【中文标题】SQLAlchemy:group_concat(case when ...)可能吗?【英文标题】:SQLAlchemy: group_concat(case when...) possible? 【发布时间】:2017-01-12 14:21:09 【问题描述】:

我正在尝试将结合使用 group_concatcase whenmysql 查询转换为 SQLAlchemy:

MySQL: group_concat(case when TableA.columnX=1 then TableA.id end)

我已经尝试过类似的查询

func.group_concat(case([tableA.columnX], value=tableA.id)).label('tableA_id_concat'),

但是这不起作用(NotImplementedError)。有没有办法在 SQLAlchemy 中将group_concatcase when 结合使用?

请注意,TableA.columnX 是 SQLAlchemy Boolean()

【问题讨论】:

【参考方案1】:

我发现了问题,是case。正确的调用是:

func.group_concat(case(
                      [ 
                          (TableA.columnX, TableA.id) 
                      ]
                 )
).label('TableA_id_concat'),

【讨论】:

以上是关于SQLAlchemy:group_concat(case when ...)可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在多个 JOIN 上使用 GROUP_CONCAT

SQLAlchemy“AttributeError:'str'对象没有属性'c'”

sql for xml path 和group_concat

SQLAlchemy -- SQLAlchemy的安装

mysql self join with group_concat 并且没有重复

在带有函数的 MySQL GROUP_CONCAT 中排序