কম্পিউটার টিউটোরিয়াল

MySQL-এ UPDATE ... WHERE ব্যবহার করে অন্য কলামের তারিখের ভিত্তিতে রেকর্ড আপডেট করা

একটি কলামের তারিখ মানের ভিত্তিতে অন্য কলাম আপডেট করতে UPDATE ... WHERE ক্লজে তারিখ তুলনা ব্যবহার করা হয়।

টেবিল তৈরি ও ডেটা ইনসার্ট

mysql> CREATE TABLE DemoTable(
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(100),
    AdmissionDate DATE
);
Query OK, 0 rows affected (0.42 sec)
mysql> INSERT INTO DemoTable(Name, AdmissionDate) VALUES ('Chris', '2019-11-21');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable(Name, AdmissionDate) VALUES ('Mike', '2019-03-11');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable(Name, AdmissionDate) VALUES ('Sam', '2018-04-01');
Query OK, 1 row affected (0.11 sec)
mysql> INSERT INTO DemoTable(Name, AdmissionDate) VALUES ('Carol', '2019-05-01');
Query OK, 1 row affected (0.40 sec)

রেকর্ড দেখানো

mysql> SELECT * FROM DemoTable;

আউটপুট:

+----+-------+---------------+
| Id | Name  | AdmissionDate |
+----+-------+---------------+
| 1  | Chris | 2019-11-21    |
| 2  | Mike  | 2019-03-11    |
| 3  | Sam   | 2018-04-01    |
| 4  | Carol | 2019-05-01    |
+----+-------+---------------+
4 rows in set (0.00 sec)

Id=3 (Sam) এর নাম ও তারিখ আপডেট

mysql> UPDATE DemoTable 
SET Name = 'Robert', AdmissionDate = '2019-04-01' 
WHERE Id = 3;
Query OK, 1 row affected (0.14 sec)
Rows matched: 1 Changed: 1 Warnings: 0

আপডেট পর রেকর্ড

mysql> SELECT * FROM DemoTable;

ফলাফল:

+----+--------+---------------+
| Id | Name   | AdmissionDate |
+----+--------+---------------+
| 1  | Chris  | 2019-11-21    |
| 2  | Mike   | 2019-03-11    |
| 3  | Robert | 2019-04-01    |
| 4  | Carol  | 2019-05-01    |
+----+--------+---------------+
4 rows in set (0.00 sec)

তারিখ-ভিত্তিক আপডেটের আরও উদাহরণ

-- নির্দিষ্ট তারিখের পরের সব রো আপডেট
UPDATE DemoTable SET Name = 'Late' WHERE AdmissionDate > '2019-04-01';

-- মাস অনুযায়ী আপডেট
UPDATE DemoTable SET Name = 'Spring' WHERE MONTH(AdmissionDate) IN (3,4,5);

-- বর্তমান তারিখ থেকে ৩০ দিন আগের রো আপডেট
UPDATE DemoTable SET Name = 'Recent' WHERE AdmissionDate >= DATE_SUB(CURDATE(), INTERVAL 30 DAY);

সতর্কতা

  • তারিখ লিটারেল সবসময় 'YYYY-MM-DD' ফরম্যাটে দিন।
  • WHERE DATE(col) = '2019-04-01' ব্যবহার করলে DATETIME/TIMESTAMP কলামেও কাজ করে।
  • ইনডেক্স ব্যবহার করতে হলে ফাংশন এড়িয়ে রেঞ্জ কোয়েরি লিখুন: WHERE col >= '2019-04-01' AND col < '2019-04-02'।
  1. MySQL-এ GROUP BY এবং MIN() ব্যবহার করে টাইমস্ট্যাম্প থেকে সর্বপ্রাচীন তারিখ বের করা

  2. MySQL-এ LEFT() ফাংশন ব্যবহার করে প্রথম অক্ষর বের করে অন্য কলামে রাখা

  3. MySQL-এ ভ্যালু ০ হলে অন্য কলাম থেকে ডেটা সিলেক্ট করা

  4. MySQL-এ কলামের সর্বোচ্চ মান বের করা (Find Maximum Value in a Column)