NOT IN
का उपयोग न करें उपप्रश्नों के साथ। यदि सबक्वेरी में कोई मान NULL
है, तो इसका गलत अर्थ विज्ञान है . उस स्थिति में, NOT IN
कभी भी TRUE का मूल्यांकन नहीं करता है, इसलिए कोई भी पंक्तियाँ वापस नहीं आती हैं।
इसके बजाय, NOT EXISTS
. का उपयोग करें :
SELECT p.id, p.name
FROM players p
WHERE p.this = 1 AND
NOT EXISTS (SELECT 1
FROM players_online po
WHERE po.name = p.name AND po.this = 'that'
)
ORDER BY RAND()
LIMIT 3, 6;