ऐसा लगता है कि आप एक एंटी-जॉइन चाहते हैं , यानी आपको सबसे पहले यह स्थापित करने की आवश्यकता है कि किन उपयोगकर्ता आईडी में IsFinal = 1
है , फिर उस परिणाम सेट का उपयोग सभी उपयोगकर्ता आईडी वापस करने के लिए करें नहीं उस सूची में।
एंटी-जॉइन को लागू करने के कई तरीके हैं।
-
NOT IN
:SELECT * FROM atable WHERE UserID NOT IN ( SELECT UserID FROM atable WHERE IsFinal = 1 );
-
NOT EXISTS
:SELECT * FROM atable t1 WHERE NOT EXISTS ( SELECT * FROM atable t2 WHERE t1.UserID = t2.UserID AND t2.IsFinal = 1 );
-
LEFT JOIN
+WHERE IS NULL
:क)
SELECT * FROM atable t1 LEFT JOIN ( SELECT * FROM atable WHERE IsFinal = 1 ) t2 ON t1.UserID = t2.UserID WHERE t2.UserID IS NULL;
बी)
SELECT * FROM atable t1 LEFT JOIN atable t2 ON t1.UserID = t2.UserID AND t2.IsFinal = 1 WHERE t2.UserID IS NULL;
ऐसा हो सकता है कि वे आपके डेटाबेस में समान रूप से कुशल हों, लेकिन फिर भी उनमें से प्रत्येक का परीक्षण करना एक अच्छा विचार हो सकता है ताकि कम से कम एक के साथ समाप्त होने से बचा जा सके जो दूसरों की तुलना में खराब प्रदर्शन करता है।