 <p>This involves some guesswork - does <code>admin</code> relate just to <code>quant1</code>? and <code>admin_custom</code> to just <code>quant1_cust</code>? Then this should reduce the effort required for a distinct list of those 2 fields:</p> <pre><code>SELECT `Fund_ID`, `Fund_Name` FROM `admin` INNER JOIN `quant1` ON `admin`.`Fund_ID` = `quant1`.`Fund_ID` AND `quant1`.`VaR 95`&gt;-0.028 UNION SELECT `Fund_ID`, `Fund_Name` FROM `admin_custom` INNER JOIN `quant1_cust` ON `admin_custom`.`Fund_ID` = `quant1_cust`.`Fund_ID` AND `admin_custom`.`user_id` = `quant1_cust`.`user_id` AND `quant1_cust`.`VaR 95`&gt;-0.028 WHERE `admin_custom`.`user_id`=361 ; </code></pre> <p>Looking at your existing query structure there are several things I would suggest you do not do. There is no point in using UNION and SELECT DISTINCT. Don't use select * with UNION or UNION ALL - be specific and only involve the fields you really need. And your existing where clause does suppress any nulls returned by a left join - so don't use left join.</p> <pre><code>SELECT DISTINCT --&lt;&lt; effort for distinctiveness here ... FROM ( SELECT * --&lt;&lt; too many fields ... UNION --&lt;&lt; effort for distinctiveness here SELECT * --&lt;&lt; too many fields ... ) LEFT JOIN ( SELECT * --&lt;&lt; too many fields ... UNION --&lt;&lt; effort for distinctiveness here SELECT * --&lt;&lt; too many fields ... ) quant1 WHERE quant1 ... </code></pre> <p>edit: an alternate - sorry, it might be easier to follow this way:</p> <pre><code>SELECT `Fund_ID`, `Fund_Name` FROM `admin` INNER JOIN `quant1` ON `admin`.`Fund_ID` = `quant1`.`Fund_ID` WHERE `quant1`.`VaR 95`&gt;-0.028 UNION SELECT `Fund_ID`, `Fund_Name` FROM `admin_custom` INNER JOIN `quant1_cust` ON `admin_custom`.`Fund_ID` = `quant1_cust`.`Fund_ID` AND `admin_custom`.`user_id` = `quant1_cust`.`user_id` WHERE `admin_custom`.`user_id`=361 AND `quant1_cust`.`VaR 95`&gt;-0.028 ; </code></pre>