हां, OR
अक्सर एक प्रदर्शन-हत्यारा होता है। UNION
. करना एक सामान्य समाधान है . आपके उदाहरण के लिए:
SELECT *
FROM `posts`
LEFT JOIN `teams_users`
ON (teams_users.team_id=posts.team_id
AND teams_users.user_id='7135')
WHERE (teams_users.status='1')
UNION DISTINCT
SELECT *
FROM `posts`
LEFT JOIN `teams_users`
ON (teams_users.team_id=posts.team_id
AND teams_users.user_id='7135')
WHERE (posts.user_id='7135');
यदि आप सुनिश्चित हैं कि डुप्लिकेट नहीं हैं, तो तेज़ी से बदलें UNION ALL
।
यदि आप लापता team_users
. के लिए मछली नहीं पकड़ रहे हैं पंक्तियाँ, JOIN
. का उपयोग करें इसके बजाय LEFT JOIN
।
यदि आपको ORDER BY
need की आवश्यकता है , कुछ माता-पिता जोड़ें:
( SELECT ... )
UNION ...
( SELECT ... )
ORDER BY ...
अन्यथा, ORDER BY
केवल दूसरे SELECT
. पर लागू होगा . (यदि आपको 'पेजिनेशन' की भी आवश्यकता है, तो देखें मेरा ब्लॉग
।)
कृपया ध्यान दें कि आपको LIMIT
. की भी आवश्यकता हो सकती है कुछ विशेष परिस्थितियों में।