SELECT 1 কোয়েরিতে LIMIT 1 ব্যবহার করার অর্থ হলো: টেবিলে কতগুলো রো থাকুক না কেন, আউটপুটে শুধু একবার 1 রিটার্ন করবে।
সিনট্যাক্স
SELECT 1 FROM yourTableName LIMIT 1;
উদাহরণ দিয়ে বুঝি
টেবিল তৈরি করুন (৭টি রো):
mysql> CREATE TABLE Select1AndLimit1Demo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(20)
-> );
Query OK, 0 rows affected (1.99 sec)
mysql> INSERT INTO Select1AndLimit1Demo(Name) VALUES('John'), ('Carol'), ('Sam'), ('Bob'), ('David'), ('Mike'), ('Maxwell');
১. LIMIT ছাড়া SELECT 1
mysql> SELECT 1 FROM Select1AndLimit1Demo;
+---+
| 1 |
+---+
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
+---+
7 rows in set (0.00 sec)
৭টি রো থাকায় ৭বার 1 প্রিন্ট হয়েছে।
২. LIMIT 1 সহ SELECT 1
mysql> SELECT 1 FROM Select1AndLimit1Demo LIMIT 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
শুধু একবার 1 প্রিন্ট হয়েছে।
SELECT 1 কেন ব্যবহার করা হয়?
- EXISTS চেক:
SELECT 1 FROM table WHERE condition LIMIT 1- রো আছে কিনা চেক করতে (ফুল রো ফেচ না করে) - পারফরম্যান্স:
SELECT *চেয়ে দ্রুত (কম ডেটা ট্রান্সফার) - সেমান্টিক: "কোনো রো আছে কিনা" বোঝাতে
বেস্ট প্র্যাক্টিস: EXISTS সাবকোয়েরি
SELECT * FROM outer_table
WHERE EXISTS (SELECT 1 FROM inner_table WHERE inner_table.id = outer_table.id);
EXISTS সাবকোয়েরিতে SELECT 1 বা SELECT * বা SELECT NULL - সবই একই কাজ করে। MySQL অপ্টিমাইজার এটি খুব দ্রুত হ্যান্ডেল করে (প্রথম ম্যাচ পেলেই স্টপ করে)।
সারাংশ
| কোয়েরি | রো সংখ্যা | আউটপুট রো |
|---|---|---|
SELECT 1 FROM table | N | N |
SELECT 1 FROM table LIMIT 1 | N | 1 |
EXISTS (SELECT 1 ...) | N | Boolean (True/False) |