sql - Specifying which record to return from a GROUP BY clause -
साफ़ करने के लिए संपादित करें
मुझे संभवतः ग्रुप द्वारा
इसलिए मैं समस्या को हल करने के बारे में मान्यताओं के बिना अपने प्रश्न को दोबारा बताऊँगा:
मेरे पास term_id
s की एक सूची है और इसमें एक तालिका है ऑब्जेक्ट्स (जिनके पास अन्य क्षेत्रों के बीच एफके के रूप में एक object_id
पीके और term_id
है), मुझे ऑब्जेक्ट को सर्वोच्च object_id
के साथ प्रत्येक < कोड> टर्म_आईड आपूर्ति की गई ऐसा करने का सही तरीका क्या है?
मूल प्रश्न
मुझे यकीन है कि मुझे कुछ स्पष्ट नहीं है, लेकिन मैं यह नहीं समझ सकता कि कैसे निर्दिष्ट करें जो रिकॉर्ड को GROUP BY
के साथ एक क्वेरी से वापस किया जाएगा। मूलभूत रूप से ग्रुप द्वारा
ग्रुप में पहला रिकार्ड देता है, मैं एक सबक्व्यरी का उपयोग किए बिना पिछले एक प्राप्त कर सकता हूं?
मूल क्वेरी का पहला रिकॉर्ड वापस आता है:
< पूर्व> SELECT * से wp_term_relationships WHERE शब्द_टाक्कोनी_आईडी IN (20, 21, 22) ग्रुप द्वारा term_taxonomy_id
यह काम करता है, लेकिन एक subquery के साथ
यह वाक्यविन्यास त्रुटि है
SELECT * से wp_term_relationships WHERE शब्द_टाकनता_आईडी IN (20, 21, 22) ORDER द्वारा object_id DESC ग्रुप द्वारा term_taxonomy_id
SELECT * ... GROUP BY
काम करने वाला नहीं है तथ्य यह है कि आपका पहला उदाहरण काम करता है MySQL की एक भद्दा विशेषता है।
ग्रुप द्वारा कार्य करने के लिए, आपका SELECT खंड नहीं हो सकता *
। इसे ग्रुप बाय कॉलम और "संकीर्ण" फ़ंक्शंस जैसे COUNT
, SUM
, आदि
SELECT COUNT जैसे मिश्रणों का होना चाहिए ( *), Some_column FROM ... some_column द्वारा ग्रुप
अपेक्षित फॉर्म है।
SELECT *
काम करने की उम्मीद नहीं है।
आप प्रत्येक term_id के लिए सर्वोच्च वस्तु_आईडी खोजना चाहते हैं
SELECT MAX (term_id), object_id वस्तु_आईडी से something_table GROUP BY object_id
ऐसा कुछ?
Comments
Post a Comment