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

SQL क्वेरी के साथ प्राइम नंबर प्रिंट करें

PostgreSQL में शायद सबसे तेज़ क्वेरी है जो 1000 तक अभाज्य संख्याओं को प्रिंट करती है:

SELECT regexp_split_to_table('2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997',E',')::int
AS x
;

मेरे कंप्यूटर पर यह केवल 16 एमएस लगा।

यदि आप SQL पसंद करते हैं, तो यह काम करता है

WITH x AS (
  SELECT * FROM generate_series( 2, 1000 ) x
)
SELECT x.x
FROM x
WHERE NOT EXISTS (
  SELECT 1 FROM x y
  WHERE x.x > y.x AND x.x % y.x = 0
)
;

यह दो गुना धीमा है - 31 ms.

उत्तर Oracle के लिए एक समकक्ष संस्करण:

WITH x AS(
    SELECT level+1 x
    FROM dual
    CONNECT BY LEVEL <= 999
)
SELECT x.x
FROM x
WHERE NOT EXISTS (
  SELECT 1 FROM x y
  WHERE x.x > y.x AND remainder( x.x, y.x) = 0
)
;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एकाधिक फ़ील्ड के आधार पर SQL तालिका में डुप्लिकेट को कैसे हटाएं

  2. mysql क्वेरी 'colmunname' जैसी तालिका से कॉलम दिखाएं:प्रश्न

  3. JQuery अजाक्स के माध्यम से PHP ऐरे पास करें

  4. युग समय के रूप में डिफ़ॉल्ट रूप से फ़ील्ड बनाएं

  5. अनुक्रमणिका सहित एक MySQL तालिका की प्रतिलिपि बनाएँ