У Вас 2 варианта, <br/> 1. использовать отфильтрованный список servers_world <br/> 2 использовать значение typew в контексте выборки ( так же с фильтром ) <br/> 1-й подход может, в свою очередь, иметь два подхода, в зависимости от того, какие фишки SQL поддерживает Ваша СУБД. <br/> <br/> 1. C(ommon) T(able) E(xpression): <br/> <br/> WITH filtered_servers_world AS ( <br/> SELECT DISTINCT cat_id, typew <br/> FROM filtered_servers_world <br/> ) <br/> SELECT `servers_texts`.* <br/> , `filtered_servers_world`.`typew` <br/> FROM `servers_texts` <br/> LEFT JOIN `filtered_servers_world` ON `servers_texts`.`id` = `filtered_servers_world`.`cat_id` <br/> WHERE `servers_texts`.`premod` = 1 <br/> AND `servers_texts`.`cat_id` = ' 10' <br/> AND `filtered_servers_world`.`typew` = ' 1' <br/> ORDER BY `vote` DESC, `servers_texts`.`id` DESC <br/> <br/> 2. Sub-Query с алиасом: <br/> SELECT `servers_texts`.* <br/> , `filtered_servers_world`.`typew` <br/> FROM `servers_texts` <br/> LEFT JOIN (SELECT DISTINCT cat_id <br/> , typew <br/> FROM `servers_world`) AS `filtered_servers_world` <br/> ON `servers_texts`.`id` = `filtered_servers_world`.`cat_id` <br/> WHERE `servers_texts`.`premod` = 1 <br/> AND `servers_texts`.`cat_id` = ' 10' <br/> AND `filtered_servers_world`.`typew` = ' 1' <br/> ORDER BY `vote` DESC, `servers_texts`.`id` DESC <br/> <br/> 3. inline используя контекст выборки данных, менее эффективно, но иногда работает лучше подходов 1, 2 в частности, когда СУБД распределенная, поскольку уменьшает количество раз данные копируются между порциями данных разделенных на разные машины <br/> <br/> SELECT * <br/> FROM ( <br/> SELECT `servers_texts`.* <br/> , (SELECT MAX(`servers_world`.`typew`) FROM `servers_world` WHERE `servers_world`.`cat_id` = `servers_texts` .`cat_id`) AS `typew` <br/> FROM `servers_texts` <br/> WHERE `servers_texts`.`premod` = 1 <br/> AND `servers_texts`.`cat_id` = ' 10' <br/> ) AS `dt` <br/> WHERE `typew` = '1' <br/> AND `premod` = 1 <br/> AND `cat_id` = ' 10' <br/> ORDER BY `vote` DESC, `servers_texts`.`id` DESC <br/> <br/> 4 lateral join или outer apply <br/> <br/> SELECT `servers_texts`.* <br/> , `filtered_servers_world`.`typew` <br/> FROM `servers_texts` <br/> LEFT JOIN LATERAL ( <br/> SELECT `typew` <br/> FROM `servers_world` <br/> WHERE `servers_world`.`cat_id` = `servers_texts`.`cat_id` <br/> ORDER BY `typew` DESC <br/> LIMIT 1 <br/> ) `filtered_servers_world` ON TRUE <br/> WHERE `servers_texts`.`premod` = 1 <br/> AND `servers_texts`.`cat_id` = ' 10' <br/> AND `filtered_servers_world`.`typew` = ' 1' <br/> ORDER BY `vote` DESC, `servers_texts`.`id` DESC <br/> <br/> Заметьте, я поменял поле на котором servers_texts и servers_world установили родство. В Вашем оригинальном запросе поле servers_texts использует id в JOIN выражении, но глядя на поля предложенные в таблицах cat_id выглядит, как поле, которое больше подходит. <br/> Возможно я не прав, пожалуйста проверьте. <br/> В крайнем случае, пожалуйста верните оригинальное поле. <br/> <br/> -- Удачи