在现有系统中,我经常使用Django values()
后跟annotate()
模式来实现SQL GROUP BY
。
但是,对于一个新功能,我需要使用一个额外的数组加入整个查询,我需要GROUP BY
该附加数组的元素。在PostgreSQL中,它看起来像这样(大大简化):
SELECT COUNT(ID) FROM some_table
INNER JOIN ...
INNER JOIN (SELECT unnest(ARRAY['A', 'B', 'C']) AS name) tag ON some_table.t LIKE tag.name || '%'
GROUP BY (some_table.some_column, tag.name);
我想留在ORM-land,因为查询经历了一系列后续转换,我希望保持一致。
有没有办法可以1)加入运行时定义的(每个查询不同)数组,2)将它添加到现有的GROUP BY
序列中?