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