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

MySQL-এ LEFT JOIN ব্যবহার করে টেবিল A-র ডেটা টেবিল B-এ না থাকলে টেবিল C-তে ইনসার্ট করা

MySQL-এ LEFT JOIN ব্যবহার করে টেবিল A-র যেসব রো টেবিল B-এ নেই (NULL), সেগুলো টেবিল C-তে ইনসার্ট করা যায়। এটি ডেটা সিঙ্ক বা ডেল্টা লোডের জন্য উপযোগী।

টেবিল A: demo20

mysql> CREATE TABLE demo20 (id INT, name VARCHAR(20));
mysql> INSERT INTO demo20 VALUES (100,'John'),(101,'Bob'),(102,'Mike'),(103,'Carol');
mysql> SELECT * FROM demo20;
+------+-------+
| id   | name  |
+------+-------+
| 100  | John  |
| 101  | Bob   |
| 102  | Mike  |
| 103  | Carol |
+------+-------+

টেবিল B: demo21

mysql> CREATE TABLE demo21 (id INT, name VARCHAR(20));
mysql> INSERT INTO demo21 VALUES (100,'Sam'),(101,'Adam'),(133,'Bob'),(145,'David');
mysql> SELECT * FROM demo21;
+------+-------+
| id   | name  |
+------+-------+
| 100  | Sam   |
| 101  | Adam  |
| 133  | Bob   |
| 145  | David |
+------+-------+

টেবিল C: demo22 (খালি)

mysql> CREATE TABLE demo22 (id INT, name VARCHAR(20));

LEFT JOIN দিয়ে ইনসার্ট (A-তে আছে B-তে নেই)

mysql> INSERT INTO demo22 (id, name)
    -> SELECT tbl1.id, tbl1.name
    -> FROM demo20 tbl1
    -> LEFT JOIN demo21 tbl2 ON tbl2.id = tbl1.id
    -> WHERE tbl2.id IS NULL;

ফলাফল (টেবিল C)

mysql> SELECT * FROM demo22;
+------+-------+
| id   | name  |
+------+-------+
| 102  | Mike  |
| 103  | Carol |
+------+-------+

ব্যাখ্যা: ID 100, 101 টেবিল B-তেও আছে (নেম ভিন্ন হলেও)। ID 102, 103 শুধু টেবিল A-তে আছে। সেগুলোই ইনসার্ট হয়েছে।

  1. Java ব্যবহার করে MySQL ডেটাবেসে ডেটা ইনসার্ট করা (JDBC)

  2. Windows-এ MySQL টেবিল ডেটা কোথায় সংরক্ষিত থাকে?

  3. MySQL-এ AUTO_INCREMENT টেবিলে INSERT INTO SELECT ব্যবহার করা

  4. MySQL স্টোরড প্রসিডিউরে ডেটা ইনসার্ট করা