मैं 4 टेबलएसक्यूएल प्रश्नों का उपयोग कर मौजूद है और OR ऑपरेटर
हैusers
| id |Username|
| 1 | John |
| 2 | Mike |
| 3 | Alex |
user_contacts
| user_id |contact_id|
| 1 | 2 |
| 1 | 3 |
| 2 | 3 |
contact_groups
| id | Group name |
| 1 | Group 1 |
| 2 | Group 2 |
| 3 | Group 3 |
user_contact_groups
| user_id |contact_group_id|
| 1 | 1 |
| 1 | 2 |
| 3 | 2 |
क्या आईडी करना पसंद है उन समूह 1 और 3 या उपयोगकर्ता 1 के एक संपर्क संपर्क के अंतर्गत आता है जो खींचने के लिए (तालिका में: user_contacts) । नीचे दिए गए कोड है, लेकिन यह रिटर्न क्वेरी खाली है
SELECT DISTINCT a.* from users as a
WHERE EXISTS (SELECT * FROM user_contacts as b
WHERE b.user_id = 1) OR
(a.id IN (select c.user_id
FROM user_contact_groups as c
WHERE c.contact_group_id IN (1,3)));
यह हमेशा अपने 'users' मेज से सभी पंक्तियों को वापस चाहिए में पहली शर्त के रूप में आपका WHERE खंड प्रभावी रूप से '1 = 1' है। – Perception
उपयोगकर्ता_आईडी भिन्न होता है। मुझे% d के साथ 1 को प्रतिस्थापित करना चाहिए। धन्यवाद – user1917451