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

किसी सूची से उन मानों का चयन करें जो किसी तालिका में नहीं हैं

एक अस्थायी तालिका सबसे अच्छा समाधान है, लेकिन यदि संभव नहीं है तो आप स्थिरांक का चयन करके और उन्हें एक साथ जोड़कर एक अस्थायी तालिका को ठग सकते हैं।

इस समाधान का उपयोग करके आप निम्न कार्य कर सकते हैं:-

SELECT i
FROM 
(
    SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 6 UNION SELECT 7
) AS mylistofids 
LEFT JOIN mytable
ON mytable.id = i
WHERE mytable.id IS NULL;

आप संख्याओं की क्रॉस जॉइनिंग रेंज द्वारा बड़ी संख्या में संख्याएं (यह मानते हुए कि आप पूर्णांक आईडी के साथ काम कर रहे हैं) उत्पन्न कर सकते हैं। फिर बस वही चुनें जो IN क्लॉज में हैं:-

SELECT i
FROM 
(
    SELECT units.i + tens.i * 10 + hundreds.i * 100 + thousands.i * 1000 + tensthousands.i * 10000 AS i
    FROM (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0 ) AS units
    CROSS JOIN (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0 ) AS tens
    CROSS JOIN (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0 ) AS hundreds
    CROSS JOIN (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0 ) AS thousands
    CROSS JOIN (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0 ) AS tensthousands
) AS mylistofids 
LEFT JOIN mytable
ON mytable.id = i
WHERE mylistofids.i IN (1, 2, 3, 6, 7)
AND mytable.id IS NULL;



  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 को AWS RDS पर PostgreSQL में माइग्रेट करना, भाग 1

  2. जावा MySQL ट्रिगर द्वारा चलाया जाता है

  3. वैश्विक सेट करें max_allowed_packet काम नहीं करता है

  4. MySQL क्वेरी:कॉमा सेपरेटेड स्ट्रिंग वाले कॉलम के साथ कॉमा सेपरेटेड वैल्यू का मिलान करें

  5. क्या VARCHAR आकार सीमा मायने रखती है?