SQL - केवल पहले 10 पंक्तियों का चयन करें?


124

मैं किसी क्वेरी के केवल पहले 10 परिणामों का चयन कैसे करूं?

मैं निम्नलिखित क्वेरी से केवल पहले 10 परिणाम प्रदर्शित करना चाहूंगा:

SELECT a.names,
         COUNT(b.post_title) AS num
    FROM wp_celebnames a
    JOIN wp_posts b ON INSTR(b.post_title, a.names) > 0
    WHERE b.post_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GROUP BY a.names
ORDER BY num DESC

3
कृपया डेटाबेस (और संस्करण) का उल्लेख करें।
विकास गोयल

2
नया उत्तर होना चाहिए, stackoverflow.com/a/36476971/124486
इवान कैरोल

इसके अलावा टॉप 10 की कोशिश करें
कैदी जीरो

जवाबों:


173

SQL सर्वर में, उपयोग करें:

select top 10 ...

जैसे

select top 100 * from myTable
select top 100 colA, colB from myTable

MySQL में, उपयोग करें:

select ... order by num desc limit 10

44

आपके RDBMS पर निर्भर करता है

एमएस SQL ​​सर्वर

SELECT TOP 10 ...

माई एसक्यूएल

SELECT ... LIMIT 10

Sybase

SET ROWCOUNT 10
SELECT ...

आदि।


7
... लिमिट 10 सिंटैक्स का उपयोग sqlite3
dat

24

MySQL में:

SELECT * FROM `table` LIMIT 0, 10

1
सीमा 0, 10 और सीमा 10 के बीच क्या अंतर है? और क्यों 10, 20 को सीमित नहीं करता है मुझे 10 वीं और 20 वीं पंक्तियों के बीच 10 पंक्तियां दें? संपादित करें: ओह, इसलिए 10, 20 की सीमा का मतलब है 10 वीं पंक्ति के बाद मुझे 20 पंक्तियाँ दें। अगर मुझे 10 और 20 के बीच की पंक्तियाँ चाहिए, तो मुझे सीमा 10, 10 करनी होगी। धन्यवाद!
अब्दुर्रहमान खान

21

ANSI SQL उत्तर है FETCH FIRST

SELECT a.names,
         COUNT(b.post_title) AS num
    FROM wp_celebnames a
    JOIN wp_posts b ON INSTR(b.post_title, a.names) > 0
    WHERE b.post_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GROUP BY a.names
ORDER BY num DESC
FETCH FIRST 10 ROWS ONLY

यदि आप चाहते हैं कि संबंध शामिल हों, तो FETCH FIRST 10 ROWS WITH TIESइसके बजाय करें।

पंक्तियों की एक निर्दिष्ट संख्या को छोड़ने के लिए OFFSET, उदाहरण के लिए , उपयोग करें

...
ORDER BY num DESC
OFFSET 20
FETCH FIRST 10 ROWS ONLY

पहले 20 पंक्तियों को छोड़ देगा, और फिर 10 पंक्तियों को लाएगा।

Oracle, PostgreSQL , MS SQL सर्वर, Mimer SQL और DB2 आदि के नए संस्करणों द्वारा समर्थित है ।


20

मानक SQL में आप उपयोग कर सकते हैं:

... FETCH FIRST 10 ROWS ONLY

यह DB2, PostgreSQL और Oracle 12.1 (और बाद में) में समर्थित है


PostgreSQL के लिए भी
ralf.w.

18

आकाशवाणी

WHERE ROWNUM <= 10  and whatever_else ;

ROWNUMएक मैजिक वैरिएबल है जिसमें प्रत्येक पंक्ति का अनुक्रम नंबर 1 .. n है


1
ये गलत है। "पंक्तिबद्ध" तालिका से शीर्ष 'n' पंक्तियाँ लाएगा। यह "जो कुछ भी" स्थिति से फ़िल्टर नहीं करेगा!
विकास गोयल

stackoverflow.com/questions/874082/… कृपया Oracle से संबंधित DB
Vikas Goel

2
SELECT *  
  FROM (SELECT ROW_NUMBER () OVER (ORDER BY user_id) user_row_no, a.* FROM temp_emp a)  
 WHERE user_row_no > 1 and user_row_no <11  

यह मेरे लिए काम करता है। यदि मैं कर सकता हूं, तो मेरे पास कुछ उपयोगी शब्द हैं जो आप देख सकते हैं

उपयोगी Dbscripts


2

आप जिस चीज की तलाश कर रहे हैं, वह लिमाट क्लॉज है।

SELECT a.names,
         COUNT(b.post_title) AS num
    FROM wp_celebnames a
    JOIN wp_posts b ON INSTR(b.post_title, a.names) > 0
    WHERE b.post_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GROUP BY a.names
ORDER BY num DESC
   LIMIT 10




हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.