2015-06-08 7 views
5

में MINUS ऑपरेटर को कैसे कार्यान्वित करें मैं Google Big Query में MINUS ऑपरेशन को लागू करने का प्रयास कर रहा हूं लेकिन ऐसा लगता है कि क्वेरी संदर्भ में कोई दस्तावेज़ीकरण नहीं है। क्या कोई इस पर आपके विचार साझा कर सकता है। मैंने इसे अतीत में नियमित एसक्यूएल में किया है लेकिन यह सुनिश्चित नहीं है कि Google इसे बड़ी क्वेरी में पेश कर रहा है या नहीं। आपके इनपुट की सराहना की जाती है। धन्यवाद।Google Big Query

उत्तर

4

BigQuery minus या except, आप not exists साथ एक ही बात कर सकते हैं प्रदान नहीं करता है:

select t1.* 
from table1 t1 
where not exists (select 1 
        from table2 t2 
        where t2.col1 = t1.col1 and t2.col2 = t1.col2 . . . 
       ); 

इस गैर शून्य मान के लिए सही ढंग से काम करता है। NULL मानों के लिए, आपको थोड़ा और प्रयास करने की आवश्यकता है। और, यह भी एक left join के रूप में लिखा जा सकता है:

select t1.* 
from table1 t1 left join 
    table2 t2 
    on t2.col1 = t1.col1 and t2.col2 = t1.col2 
where t2.col1 is null; 

इनमें से एक BigQuery को स्वीकार्य होना चाहिए।

+1

BigQuery अभी तक EXISTS का समर्थन नहीं करता है, इसलिए यह केवल बाएं जॉइन है। –

2

क्या मैं आमतौर पर करते हैं शून्य फ़ील्ड की स्वतंत्र रूप से Linoff के जवाब के समान है और हमेशा काम करता है,:

SELECT t1.* 
FROM table1 t1 LEFT JOIN 
    (SELECT 1 AS aux, * FROM table2 t2) 
    ON t2.col1 = t1.col1 and t2.col2 = t1.col2 
WHERE t2.aux IS NULL; 

यह नल क्षेत्रों के साथ समस्याओं को हल करती है। नोटिस: भले ही यह एक पुराना धागा है, मैं पूरी तरह से पूर्णता के लिए टिप्पणी कर रहा हूं अगर कोई भविष्य में इस पृष्ठ पर जाता है।

संबंधित मुद्दे