किसी कॉलम (जैसे Value) के डुप्लिकेट मान वाले समूहों में से सबसे पहली (न्यूनतम) टाइमस्टैम्प प्राप्त करने के लिए MIN() एग्रीगेट फ़ंक्शन के साथ GROUP BY का उपयोग करें।
टेबल बनाएं
mysql> CREATE TABLE DemoTable1870 (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Value INT,
ShippingTimestamp VARCHAR(100)
);
डेटा डालें (Unix टाइमस्टैम्प स्ट्रिंग के रूप में)
mysql> INSERT INTO DemoTable1870(Value, ShippingTimestamp) VALUES(10, '1570645800'), (10, '1546194600'), (11, '1573324200'), (11, '1557599400');
प्रति Value न्यूनतम टाइमस्टैम्प
mysql> SELECT MIN(ShippingTimestamp) FROM DemoTable1870 GROUP BY Value;
आउटपुट:
+------------------------+ | MIN(ShippingTimestamp) | +------------------------+ | 1546194600 | | 1557599400 | +------------------------+
नोट: स्ट्रिंग तुलना
चूंकि ShippingTimestamp VARCHAR है, MIN() लेक्सिकोग्राफिक (स्ट्रिंग) तुलना करता है। यूनिक्स टाइमस्टैम्प के लिए यह ठीक काम करता है क्योंकि अंक लंबाई समान है।
बेहतर: BIGINT या TIMESTAMP कॉलम उपयोग करें
ALTER TABLE DemoTable1870 MODIFY ShippingTimestamp BIGINT; -- या ALTER TABLE DemoTable1870 MODIFY ShippingTimestamp TIMESTAMP;
पठनीय दिनांक में बदलें
SELECT FROM_UNIXTIME(MIN(ShippingTimestamp)) FROM DemoTable1870 GROUP BY Value;
संबंधित
MAX()- अंतिम/नवीनतम टाइमस्टैम्प।GROUP_CONCAT()- सभी टाइमस्टैम्प सूची।- विंडो फ़ंक्शन:
ROW_NUMBER() OVER (PARTITION BY Value ORDER BY ShippingTimestamp)(MySQL 8.0+)