Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL UNION 2 क्वेरी जिसमें ORDER BYs शामिल हैं

यह आपका समाधान है:

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();

मैंने जो बदलाव किए हैं वे हैं:

  1. आपके प्रत्येक प्रश्न जो UNION का हिस्सा हैं, उन्हें कोष्ठक में संलग्न किया जाना चाहिए (पहली क्वेरी के लिए बोल्ड में दिखाया गया है; दूसरा पहले से ही संलग्न है)
  2. उपनाम हटा दिया profile3 आपकी दूसरी क्वेरी के लिए
  3. अंतिम के लिए ORDER BY RAND() , आपको व्युत्पन्न तालिका में यूनियन परिणामसेट बनाना होगा; मैंने इसे TEMP दे दिया है उपनाम के रूप में

मैंने उपरोक्त क्वेरी का परीक्षण नहीं किया है, लेकिन मुझे आशा है कि इसे काम करना चाहिए। मुझे अपने निष्कर्ष बताएं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL त्रुटि कोड:1175 MySQL कार्यक्षेत्र में अद्यतन के दौरान

  2. PHP/MYSQL में एक के रूप में दो mysql प्रश्नों को कैसे निष्पादित करें?

  3. CentOS 8 / RHEL 8 . पर MySQL 8.0 कैसे स्थापित करें

  4. हाइबरनेट - अद्वितीय कॉलम बाधा को अनदेखा किया जा रहा है

  5. MySQL सभी प्रक्रियाओं की सूची बनाएं