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

MySQL-এ CASE WHEN EXISTS দিয়ে রেকর্ডের উপস্থিতি চেক করে 'Present'/'Not Present' দেখানো


CASE WHEN EXISTS (SELECT ...) THEN ... ELSE ... END প্যাটার্ন

MySQL-এ কোনো রেকর্ড টেবিলে আছে কিনা চেক করে শর্তসাপেক্ষ আউটপুট দেখাতে CASE WHEN EXISTS (subquery) THEN 'Present' ELSE 'Not Present' END প্যাটার্ন ব্যবহার করা হয়।

টেবিল ও ডেটা

mysql> CREATE TABLE DemoTable (UserId INT, UserName VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES(100,'Chris'), (101,'Robert'), (102,'David'), (103,'Mike');

সব রেকর্ড

+--------+----------+
| UserId | UserName |
+--------+----------+
| 100    | Chris    |
| 101    | Robert   |
| 102    | David    |
| 103    | Mike     |
+--------+----------+

CASE WHEN EXISTS কোয়েরি (UserId=102 চেক)

mysql> SELECT CASE WHEN EXISTS(SELECT * FROM DemoTable WHERE UserId = 102) 
THEN 'Present' ELSE 'Not Present' END AS Result;
+---------+
| Result  |
+---------+
| Present |
+---------+

ব্যাখ্যা

  • EXISTS(SELECT * FROM DemoTable WHERE UserId = 102) — সাবকোয়েরি কমপক্ষে এক সারি রিটার্ন করলে TRUE।
  • CASE WHEN ... THEN 'Present' ELSE 'Not Present' END — TRUE হলে 'Present', FALSE হলে 'Not Present'।
  • EXISTS খুব দ্রুত কাজ করে (প্রথম ম্যাচ পাওয়ায় থামে, COUNT(*) দরকার নেই)।

বিকল্প: LEFT JOIN বা IN

SELECT CASE WHEN 102 IN (SELECT UserId FROM DemoTable) THEN 'Present' ELSE 'Not Present' END;
  1. Microsoft Access-এ MySQL LIMIT ক্লজ অনুকরণ করা (TOP ব্যবহার করে)

  2. MySQL-এ CASE WHEN দিয়ে শর্তভিত্তিক কাউন্ট করা (Conditional Aggregation)

  3. MySQL-এ IN ক্লজ এবং ORDER BY FIELD ব্যবহার করে নির্দিষ্ট ক্রমে ডেটা বের করা

  4. MySQL-এ CASE WHEN ক্লজে এক্সপ্রেশন সঠিকভাবে ব্যবহার করা