इसे यह करना चाहिए:
SELECT COUNT(me.A) FROM social AS me
INNER JOIN social AS you ON me.B = you.A
WHERE me.A = you.B AND me.A = 1
COUNT
निकालें यदि आप मित्रों की सूची चाहते हैं।
संपादित करें
अनुरोध के अनुसार, एक स्पष्टीकरण।
आप JOIN
अपने आप में एक तालिका बनाना क्योंकि आप पंक्तियों के बीच संबंधों में रुचि रखते हैं।
मैंने टेबल को me
. के रूप में उपनाम देने का फैसला किया और you
रिश्ते को स्पष्ट करने के लिए। वह जो कह रहा है वह है वह कॉलम A
मुझे अनुयायी . के रूप में संदर्भित कर सकते हैं या आप अनुयायी के रूप में। कॉलम B
अनुयायी . को संदर्भित करता है
यदि आप कॉलम का नाम बदलते हैं, तो क्वेरी अधिक स्पष्ट रूप से पढ़ेगी
अगर A
-> follower
और B
-> follower
, हमारे पास होगा:
SELECT COUNT(me.follower) FROM social AS me
INNER JOIN social AS you ON me.followee = you.follower
WHERE me.follower = you.followee AND me.follower = 1
तो यह कह रहा है, इस टेबल की दो कॉपी लें और JOIN
वे पंक्तियाँ जहाँ अनुसरणकर्ता me
. में है you
. में अनुयायी है . फिर, केवल उन पंक्तियों को फ़िल्टर करें और दिखाएं जहां अनुयायी me
. में हैं you
. में अनुसरणकर्ता है ... वहां (A == B) && (B == A)
. रखने की आपकी इच्छा को कैप्चर करके
शायद टेबल उपनाम इतने अच्छे नहीं हैं, लेकिन मुझे आशा है कि यह थोड़ा स्पष्ट करेगा।
दूसरा संपादन नीचे दी गई टिप्पणियों के अनुसार, एक स्पष्ट रूप हो सकता है:
SELECT COUNT(me.A) FROM social AS me
INNER JOIN social AS you ON me.A = you.B AND me.B = you.A
WHERE me.A = 1