की तरह, एसक्यूएल सर्वर 2005 में शीर्ष कीवर्ड है, अगर मैं एकाधिक तालिका & पर शामिल हो गया हूं तो प्रत्येक आईडी/कॉलम के चरम को पुनर्प्राप्त करना चाहते हैं, तो mysql में शीर्ष 1 पंक्ति का चयन कैसे करें। सीमा संख्या को प्रतिबंधित करता है। पंक्ति रिटर्न की वजह से यह मेरी समस्या का समाधान नहीं कर सकता है।कई तालिकाओं से MYSQL शीर्ष एन पंक्तियां
उत्तर
SELECT v.*
FROM document d
OUTER APPLY
(
SELECT TOP 1 *
FROM version v
WHERE v.document = d.id
ORDER BY
v.revision DESC
) v
या
SELECT v.*
FROM document d
LEFT JOIN
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY v.id ORDER BY revision DESC)
FROM version
) v
ON v.document = d.id
AND v.rn = 1
बाद और अधिक कुशल है अपने दस्तावेज़ों आमतौर पर कुछ संशोधन किया है और आप सभी या लगभग सभी दस्तावेजों चुनने की आवश्यकता है; यदि दस्तावेजों में कई संशोधन हैं या आपको दस्तावेजों के केवल एक छोटे से सबसेट का चयन करने की आवश्यकता है तो पूर्व अधिक कुशल है।
अद्यतन:
क्षमा करें, प्रश्न नोटिस नहीं किया था MySQL
बारे में है।
MySQL
में, आप इसे इस तरह से कार्य करें:
SELECT *
FROM document d
LEFT JOIN
version v
ON v.id =
(
SELECT id
FROM version vi
WHERE vi.document = d.document
ORDER BY
vi.document DESC, vi.revision DESC, vi.id DESC
LIMIT 1
)
इस के लिए version (document, revision, id)
पर एक समग्र सूचकांक बनाएं तेजी से काम करने के लिए।
MySQL 'APPLY' या 'ROW_NUMBER()' (विंडो फ़ंक्शंस) का समर्थन नहीं करता है। –
@ बिल: ठीक है, यह ध्यान नहीं दिया कि यह 'MySQL' के बारे में है। – Quassnoi
बाद में उत्तर काम करता है लेकिन क्या होगा यदि कुछ पंक्तियों के लिए मेरे पास केवल एक रिकॉर्ड है: संस्करण में उस विशेष क्वेरी में केवल एक रिकॉर्ड है जो उस आईडी के लिए कोई पंक्ति नहीं प्राप्त करता है। देर से उत्तर/टिप्पणी –
यदि मैं आपको सही ढंग से समझता हूं, तो शीर्ष आपकी समस्या को हल नहीं करता है। शीर्ष सीमा के बराबर बराबर है। जो आप खोज रहे हैं वह कुल कार्य है, जैसे अधिकतम() या न्यूनतम() यदि आप चरम सीमा चाहते हैं। उदाहरण के लिए:
select link_id, max(column_a), min(column_b) from table_a a, table_b b
where a.link_id = b.link_id group by link_id
- 1. [MySQL]: दो निर्भर तालिकाओं से पंक्तियां हटाएं
- 2. कई तालिकाओं में से कई पिवोट
- 3. सभी तालिकाओं से चुनें - MySQL
- 4. कई तालिकाओं
- 5. कई तालिकाओं
- 6. कई से कई रिश्ते में संबंधित पंक्तियां हटाना
- 7. कुछ सॉर्टिंग (कॉलम 'द्वारा क्रमबद्ध) के साथ तालिका से शीर्ष-एन' पंक्तियां हटाएं
- 8. * एकाधिक तालिकाओं से चुनें। MySQL
- 9. एकाधिक तालिका वाले शीर्ष एन प्रति समूह
- 10. MySQL - एक जुड़ा हुआ सबक्वायरी के साथ कई पंक्तियां डालने?
- 11. MySQL ऑफ़सेट असीमित पंक्तियां
- 12. इनर कई तालिकाओं
- 13. किसी तालिका से शीर्ष एन पंक्तियों का चयन करें
- 14. एक साथ कई तालिकाओं से रिकॉर्ड हटाएं?
- 15. कई तालिकाओं का चयन करें जब एक तालिका खाली MySQL
- 16. MySQL सबक्वेरी रिटर्न एक से अधिक पंक्तियां
- 17. कैसे अलग MySQL तालिकाओं
- 18. पीएचपी स्क्रिप्ट MySQL तालिकाओं
- 19. MySQL "एन" टाइम्स
- 20. LIMIT 1 MySQL में विशिष्ट तालिकाओं से जुड़ने के अंदर?
- 21. MySQL में एकाधिक तालिकाओं से कैसे हटाएं?
- 22. एकाधिक MySQL तालिकाओं से एकल HTML तालिका
- 23. MySQL पंक्तियां हटाएं, या "मृत" चिह्नित करें?
- 24. डेटा की कितनी पंक्तियां डेटा की कई पंक्तियां हैं?
- 25. Grails: कई तालिकाओं पर प्रक्षेपण?
- 26. MySQL कई से कई का चयन करें
- 27. mysql तालिकाओं के बिना दिनांक
- 28. मोंगोडब: प्रत्येक समूह से शीर्ष एन पंक्तियों का चयन करें
- 29. mysql + अद्यतन शीर्ष n
- 30. हम एक MySQL तालिका को कई छोटी तालिकाओं में क्यों विभाजित करते हैं?
शायद कुछ उदाहरण? – hsz
हां, सवाल बहुत स्पष्ट नहीं है। मैंने अभी अनुमान लगाया है –
सवाल बहुत स्पष्ट नहीं है, लेकिन मुझे लगता है कि यह 'सबसे बड़ी-एन-प्रति-समूह' समस्या का एक और मामला है जो अक्सर आता है। –