द्वारा MySQL समूह मैंने यहां समान प्रकार के प्रश्न देखा लेकिन उनमें से कोई भी मेरी स्थिति में मदद नहीं करता।आईडी और नवीनतम डेटाटाइम
मैं एक मेज कहना टेस्ट (mysql MyISAM का प्रयोग करके)
टेस्ट निम्न स्कीमा है की सुविधा देता है है:
TID INT PRIMARY KEY AUTO_INCREMENT
TData varchar (data that i want to select)
TUserID INT (this will be joined with users table, same users can have many records here)
TViewedAt DATETIME (records each time user visits page, datetime format)
अब हर बार एक परीक्षण पृष्ठ वर्तमान में उपयोगकर्ता के प्रवेश का दौरा किया है, यह रिकॉर्ड कहते हैं इस तालिका में उपयोगकर्ता आईडी को रिकॉर्ड करने वाले किसी भी व्यक्ति को रिकॉर्ड करने के लिए, कुछ डेटा और तिथि और समय जो उपयोगकर्ता टीआईडी के साथ जाते थे, हर बार स्वतः बढ़ते थे।
फिर मेरे पास बैकएंड प्रबंधित पृष्ठ है जहां मैं देख सकता हूं कि कौन सा उपयोगकर्ता परीक्षण पृष्ठ पर गया, कितनी बार, डेटा और कब। असल में यह 20-25 नवीनतम पंक्तियों की सूची वाला एक टेबल है। मेरी क्वेरी केवल प्रति डेटा एक रिकॉर्ड का चयन करना चाहिए। डेटा उपयोगकर्ता के लिए अलग-अलग समय पर समान हो सकता है लेकिन मैं केवल प्रत्येक उपयोगकर्ता के लिए एक डेटा चुनना चाहता हूं जो सबसे नवीनतम है। तो यदि उपयोगकर्ता 10 बार परीक्षण पृष्ठ पर जाता है, तो 10 रिकॉर्ड डेटाबेस पर जाते हैं लेकिन तालिका पर केवल 1 नवीनतम रिकॉर्ड प्रदर्शित करते हैं। यदि कोई अन्य उपयोगकर्ता 15 बार पृष्ठ पर जाता है तो यह इस दूसरे उपयोगकर्ता के लिए 1 रिकॉर्ड प्रदर्शित करता है जो कि नवीनतम है, इसलिए अब कुल मिलाकर हमारे पास तालिका में 2 पंक्तियां प्रदर्शित होती हैं। मुझे सबकुछ काम करने के लिए मिला लेकिन किसी कारण से ग्रुप बाय और MAX (तारीख) मुझे प्रत्येक तारीख के लिए नवीनतम डेटाटाइम नहीं देता है।
SELECT *
FROM Test
WHERE TUserID = 123
GROUP BY TData
ORDER BY TViewedAt
रिटर्न 2 पंक्तियाँ जिसमें से उन पंक्तियों में से कोई भी नवीनतम हैं:
यहाँ मेरी क्वेरी है।
धन्यवाद बहुत
हाँ यह काम कर रहा है, बहुत बहुत धन्यवाद, बहुत आसान और आसान – Giorgi
आपका स्वागत है, –
मदद करने में खुशी है ऐसा करने का कोई तरीका है यह अधिक कुशल है, यानी, सबक्वायरीज़ की आवश्यकता नहीं है? मुझे लगता है कि यह मेरे सर्वर को मार रहा है – Jason