SELECT * FROM ( (SELECT *,1.5 as rank, _posts.feed_id as fid, MATCH (_feeds.name) AGAINST ('terre') as matcher FROM _posts INNER JOIN _feeds USING(feed_id) WHERE MATCH (_feeds.name) AGAINST ('terre') ) UNION (SELECT *,1.4 as rank, _posts.feed_id as fid, MATCH (_posts.title ) AGAINST ( 'terre') as matcher FROM _posts INNER JOIN _feeds USING(feed_id) WHERE MATCH (_posts.title ) AGAINST ( 'terre') ) UNION (SELECT *,1.2 as rank, _posts.feed_id as fid, MATCH (_feeds.site_url, _feeds.description) AGAINST ('terre') as matcher FROM _posts INNER JOIN _feeds USING(feed_id) WHERE MATCH (_feeds.site_url, _feeds.description) AGAINST ('terre') ) UNION (SELECT *,1 as rank, _posts.feed_id as fid, MATCH (_posts.content, _posts.enclosure) AGAINST ('terre') as matcher FROM _posts INNER JOIN _feeds USING(feed_id) WHERE MATCH (_posts.content, _posts.enclosure) AGAINST ('terre') ) ORDER BY rank*matcher DESC ) as allsearch GROUP BY allsearch.fid ORDER BY rank*matcher DESC