2012-05-29 44 views
0

我有以下查詢,這給了我一個給定標題的提供商空的結果:排除在UNION查詢

SELECT DISTINCT(provider) FROM 
    (SELECT title, provider FROM financials_raw 
     UNION 
     SELECT title, provider from sales_raw 
    ) combined 
     WHERE title = 'Home' 

然而,這將返回NULL提供商結果以及如何將我排除所有空結果如何?

+3

'WHERE title ='Home'AND provider IS NOT NULL'? – eggyal

+0

贊同@eggyal – MikeTWebb

+0

是的,並刪除括號,'distinct(x)'與'distinct x'' – Andomar

回答

8

繼上述我的意見,以下查詢將完成相同的,但是更有效的(如不希望的記錄不首先被在UNION操作接合隨後被從物化表濾波前):

SELECT provider FROM financials_raw WHERE title = 'Home' AND provider IS NOT NULL 
UNION 
    SELECT provider FROM  sales_raw WHERE title = 'Home' AND provider IS NOT NULL 

請注意,UNION(沒有ALL資格)意味着DISTINCT

+0

謝謝,請你解釋爲什麼這個查詢比上面的更有效率? – David542

+2

@ David542:作爲不受歡迎的記錄,在隨後從物化表中過濾之前,不會先在「UNION」操作中加入** – eggyal