में कैसे आप एक AS400/डीबी 2 डेटाबेसशीर्ष N का चयन करें ... AS400
उत्तर
Select col1,col2
from
as400table
where col1='filter'
order by col1
fetch first N row only
एक ORDER BY
खंड सेट करना न भूलें के खिलाफ एक
Select top N * from as400table
प्रकार क्वेरी निष्पादित करते एसक्यूएल कैसे करना है, क्योंकि डीबी 2 गारंटी नहीं देता है कि FETCH FIRST N ROW ONLY
द्वारा लौटाई गई पंक्तियां हमेशा एक ही एन
कड़ाई से, डीबी 2 में शीर्ष एन के बराबर नहीं है।
SELECT 1 FROM sysibm.sysdummy1
WHERE EXISTS (SELECT 2 FROM sysibm.sysdummy1)
FETCH FIRST ROW ONLY
compiles और चलाता है, लेकिन
SELECT 1 FROM sysibm.sysdummy1
WHERE EXISTS (SELECT 2 FROM sysibm.sysdummy1 FETCH FIRST ROW ONLY)
संकलन नहीं होंगे।
TOP N
और FETCH FIRST N
समान नहीं हैं। आप केवल FETCH FIRST
प्रति प्रश्न पर उपयोग कर सकते हैं, जबकि किसी भी उप-चयन में उपयोग किया जा सकता है।
आप TOP N
अनुकरण करने के लिए एक उप क्वेरी में एक खिड़की समारोह का उपयोग कर सकते हैं:
select *
from (
select id, row_number()
over (order by id) as rn
from testsch.testtbl
) as r
where r.rn < 100 -- This is N rows you are looking for
यह ठीक 99 पंक्तियों वापस आ जाएगी। मैंने कोशिश की कि iSeries 7 में और यह काम किया।
आईबीएम की बात आने पर मैं केवल एक बच्चा-गीक हूं - मैं एक एसक्यूएल सर्वर लड़का हूं। लेकिन मुझे राउनम्बर दृष्टिकोण मिला (जिसे मैंने ओरेकल में सफलतापूर्वक उपयोग किया है) डीबी 2 में काम नहीं किया था।
SELECT
MYFIELD
FROM
"SCHEMANAME"."TABLENAME"
WHERE
FILTERCOL1 = 000001
AND FILTERCOL2 = 1
ORDER BY
MYFIELD DESC FETCH FIRST ROW ONLY
(। मैं उतरते क्योंकि मैं अंतिम मान की जरूरत आदेश दिया)
आशा इस मदद करता है: मैं इस एक का उपयोग किया। जोय
इसके बजाय परिणाम को सीमित करना आसान नहीं होगा? बोलो तिथि के अनुसार क्रम में है और मैं शीर्ष परिणाम
SELECT banana_equipment_id
FROM new_banana_equipment
WHERE banana_code=0000001
ORDER BY banana_date DESC
LIMIT 1;
** LIMIT n ** का उपयोग 7.1 और बाद में डीबी 2 में किया जा सकता है, लेकिन यह ध्यान दिया जाना चाहिए कि यह _fetch-first-clause_ के लिए सिर्फ एक वैकल्पिक वाक्यविन्यास है। वही व्यवहार ** LIMIT 1 ** के साथ होता है जैसे ** केवल 1 फ़ीचर ** के साथ। – user2338816
शानदार! यह सही जवाब होना चाहिए। :-) पहले एन पंक्तियां केवल उपयोगी है, लेकिन सैद्धांतिक रूप से 100% समकक्ष नहीं है। वाहवाही। –