subq1 = session.query(func.array_to_string(Company.groups, ',').label(
    'group_name')).filter((Company.status == 'active') & func.
    array_to_string(Company.groups, ',').like(term)).limit(limit).subquery()
subq2 = session.query(func.regexp_split_to_table(subq1.c.group_name, ',').
    distinct().label('group')).subquery()
q = session.query(subq2.c.group).filter(subq2.c.group.like(term)).order_by(
    subq2.c.group).limit(limit)
Подзапрос SQLAlchemy в предложении from без соединения