zerkms
А в чем вы видите проблему?
SELECT * FROM news WHERE XXXX AND cat=1 UNION SELECT * FROM NEWS WHERE XXX AND cat<>1
Просто в PHP вывести первые четыре записи рекордсета, не выводя пятую, если она есть. Если речь не идет о большом количестве новостей, думаю, вполне приемлемый вариант. Можно, конечно, извратиться и попробовать что-то вроде
SELECT * FROM (SELECT * FROM news WHERE XXXX AND cat=1 UNION SELECT * FROM NEWS WHERE XXX AND cat<>1) LIMIT 4