यह आपका समाधान है:
SELECT *
FROM
(
**(**
SELECT profileId
FROM
(
SELECT profileId
FROM profile profile2
WHERE profile2.profilePublishDate <= Now()
ORDER BY profile2.profilePublishDate DESC
LIMIT 0,40
) AS profile1
ORDER BY RAND()
LIMIT 0,20
**)**
UNION
(
SELECT profileId
FROM profile profile4
WHERE profileId NOT IN (
SELECT profileId
FROM profile profile4
WHERE profile4.profilePublishDate <= Now()
ORDER BY profile4.profilePublishDate DESC
LIMIT 0,40
)
ORDER BY RAND()
LIMIT 0,40
)
) TEMP
ORDER BY RAND();
मैंने जो बदलाव किए हैं वे हैं:
- आपके प्रत्येक प्रश्न जो UNION का हिस्सा हैं, उन्हें कोष्ठक में संलग्न किया जाना चाहिए (पहली क्वेरी के लिए बोल्ड में दिखाया गया है; दूसरा पहले से ही संलग्न है)
- उपनाम हटा दिया
profile3
आपकी दूसरी क्वेरी के लिए - अंतिम के लिए
ORDER BY RAND()
, आपको व्युत्पन्न तालिका में यूनियन परिणामसेट बनाना होगा; मैंने इसेTEMP
दे दिया है उपनाम के रूप में
मैंने उपरोक्त क्वेरी का परीक्षण नहीं किया है, लेकिन मुझे आशा है कि इसे काम करना चाहिए। मुझे अपने निष्कर्ष बताएं।