MySQL-এ WHERE ক্লজে পুরো টেবিলের রো কাউন্ট (COUNT(*)) ব্যবহার করতে সাবকোয়েরি লাগে, কারণ অ্যাগ리게েট ফাংশন সরাসরি WHERE-তে ব্যবহার করা যায় না।
সিনট্যাক্স
SELECT yourColumnName1, yourColumnName2, ... FROM yourTableName WHERE (SELECT COUNT(*) FROM yourTableName) = 2;
উদাহরণ
টেবিল তৈরি:
mysql> CREATE TABLE CountWithSubqueryDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> EmployeeName VARCHAR(20)
-> );
৯টি রেকর্ড ইনসার্ট (কাউন্ট ৯):
mysql> SELECT * FROM CountWithSubqueryDemo;
+----+--------------+ | Id | EmployeeName | +----+--------------+ | 1 | John | | 2 | NULL | | 3 | Carol | | 4 | | | 5 | Bob | | 6 | NULL | | 7 | Sam | | 8 | Mike | | 9 | James | +----+--------------+
কাউন্ট = ২ চেক (ফলাফল খালি):
mysql> SELECT Id, EmployeeName FROM CountWithSubqueryDemo
-> WHERE (SELECT COUNT(*) FROM CountWithSubqueryDemo) = 2;
Empty set (0.03 sec)
টেবিল টরানকেট করে ২টি রেকর্ড ইনসার্ট:
mysql> TRUNCATE TABLE CountWithSubqueryDemo;
mysql> INSERT INTO CountWithSubqueryDemo(EmployeeName) VALUES('James'), (NULL);
এখন কাউন্ট = ২ (ফলাফল পাওয়া যাবে):
mysql> SELECT Id, EmployeeName FROM CountWithSubqueryDemo
-> WHERE (SELECT COUNT(*) FROM CountWithSubqueryDemo) = 2;
+----+--------------+ | Id | EmployeeName | +----+--------------+ | 1 | James | | 2 | NULL | +----+--------------+
ব্যাখ্যা: সাবকোয়েরি (SELECT COUNT(*) FROM table) প্রতিটি রোয়ের জন্য একবার এক্সিকিউট হয় (অপ্টিমাইজার ক্যাশ করতে পারে)। এটি কন্ডিশনাল ফিল্টারের জন্য কাজে লাগে, যেমন "টেবিলে শুধু ২টি রো থাকলে সিলেক্ট কর"।