GROUP BY DATE(column) ব্যবহার করে একই তারিখের একাধিক রো থেকে শুধু একটি রো বের করা যায়।
টেবিল ও ডেটা:
mysql> CREATE TABLE DemoTable1996 (
ShippingDate DATETIME,
CustomerName VARCHAR(20)
);
mysql> INSERT INTO DemoTable1996 VALUES
('2019-12-21 10:45:00','Chris'),
('2019-12-21 12:10:00','David'),
('2019-12-20 12:10:00','Bob');
তარিখ ভিত্তিক গ্রুপ (প্রতি তারিখে প্রথম রো):
mysql> SELECT * FROM DemoTable1996 GROUP BY DATE(ShippingDate);
আউটপুট:
+---------------------+--------------+ | ShippingDate | CustomerName | +---------------------+--------------+ | 2019-12-21 10:45:00 | Chris | | 2019-12-20 12:10:00 | Bob | +---------------------+--------------+
সতর্কতা
- MySQL ৫.৭+ এ
ONLY_FULL_GROUP_BYSQL মোড ডিফল্ট অন। এতে নন-এগ리게েটেড কলাম সিলেক্ট করলে এরর দেয়। - সঠিক পদ্ধতি:
ANY_VALUE(CustomerName)বা সাবকোয়েরি ব্যবহার করুন।
সঠিক পদ্ধতি (সকল ভার্সনে কাজ করে)
SELECT d1.* FROM DemoTable1996 d1
JOIN (
SELECT DATE(ShippingDate) AS dt, MIN(ShippingDate) AS min_dt
FROM DemoTable1996
GROUP BY DATE(ShippingDate)
) d2 ON DATE(d1.ShippingDate) = d2.dt AND d1.ShippingDate = d2.min_dt;
এটি নিশ্চিত করে প্রতিটি তারিখের সবচেয়ে প্রথম রো আপনি পাবেন।