=====Сортировка перед группировкой==== Бывает необходимо сгруппировать вывод уже после сортировки, так как группировка оставляет только первую похожую запись остальные сворачивает. Если мы используем mysql8.0, то это будет соответствовать запросу который показан ниже: SELECT * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY t.id Desc) row_num ,t.* FROM `km_communications` t WHERE (t.`relation_id` IN (14931, 12344, 124334)) AND (t.`relation`='Deals') ORDER BY t.`id` DESC ) `new_table` GROUP BY `new_table`.`relation_id` Если использовать Yii2 То это будет выглядеть подобным образом: Communications::find()->from([ 'new_table' => Communications::find() ->alias('t') ->select([ 'ROW_NUMBER() OVER (ORDER BY id DESC) row_num', 't.*' ]) ->where(['in', 'relation_id', $ids]) ->andWhere(['relation' => (new \ReflectionClass(Deals::className()))->getShortName()]) ->orderBy([ 'id' => SORT_DESC ]) ])->groupBy('new_table.relation_id')->all(); подробнее можно посмотреть [[mysql:when_to_order_before_group|здесь]]