আমি নীচে কিছু দিয়ে অনেক প্রশ্ন দেখেছি।
Select 1
From table
এর 1
অর্থ কী, কীভাবে এটি কার্যকর করা হবে এবং কী ফিরে আসবে?
এছাড়াও, কোন ধরণের পরিস্থিতিতে এটি ব্যবহার করা যেতে পারে?
আমি নীচে কিছু দিয়ে অনেক প্রশ্ন দেখেছি।
Select 1
From table
এর 1
অর্থ কী, কীভাবে এটি কার্যকর করা হবে এবং কী ফিরে আসবে?
এছাড়াও, কোন ধরণের পরিস্থিতিতে এটি ব্যবহার করা যেতে পারে?
উত্তর:
SELECT 1 FROM TABLE_NAME
এর অর্থ, "টেবিল থেকে 1 রিটার্ন করুন"। এটি নিজস্বভাবে বেশ অবিস্মরণীয়, তাই সাধারণত এটি ব্যবহার করা হবে WHERE
এবং প্রায়শই EXISTS
(@ জিবিএন নোট হিসাবে, এটি প্রয়োজনীয় সর্বোত্তম অনুশীলন নয়, তবে এটি লক্ষ্য করা যথেষ্ট সাধারণ, যদিও এটি সত্যিকার অর্থে অর্থবহ না হলেও ( এটি বলেছিল, আমি এটি ব্যবহার করব কারণ অন্যরা এটি ব্যবহার করে এবং এটি অবিলম্বে "আরও স্পষ্ট" course অবশ্যই এটি একটি সান্দ্র মুরগী বনাম ডিমের সমস্যা হতে পারে, তবে আমি সাধারণত বাস করি না))।
SELECT * FROM TABLE1 T1 WHERE EXISTS (
SELECT 1 FROM TABLE2 T2 WHERE T1.ID= T2.ID
);
মূলত, উপরেরটি টেবিল 1 থেকে সমস্ত কিছু ফিরিয়ে দেবে যা টেবিল 2 এর সাথে সম্পর্কিত আইডি রয়েছে (এটি একটি স্বীকৃত উদাহরণ, স্পষ্টতই, তবে আমি বিশ্বাস করি এটি ধারণাটি পৌঁছে দেয়। ব্যক্তিগতভাবে, আমি সম্ভবত উপরেরটি করব SELECT * FROM TABLE1 T1 WHERE ID IN (SELECT ID FROM TABLE2);
যেমন আমি দেখি যে দূরে আরো পাঠক স্পষ্ট যদি না সবিশেষভাবে বাধ্যকারী কারণ না করার জন্য) ছিল।
আসলে একটি ঘটনা আছে যা আমি এখন অবধি ভুলে গেছি। আপনি যেখানে বাইরের ভাষা থেকে ডাটাবেসে কোনও মানের অস্তিত্ব নির্ধারণের চেষ্টা করছেন সেখানে কখনও কখনও SELECT 1 FROM TABLE_NAME
ব্যবহৃত হবে। এটি একটি পৃথক কলাম নির্বাচন করার ক্ষেত্রে উল্লেখযোগ্য সুবিধা দেয় না, তবে বাস্তবায়নের উপর নির্ভর করে এটি একটি করার মাধ্যমে যথেষ্ট লাভের প্রস্তাব দিতে পারে SELECT *
, কারণ এটি প্রায়শই এমন হয় যে ডিবি কোনও ভাষায় ফিরে আসে এমন আরও কলামগুলি, তত বেশি ডেটা কাঠামো, যার ফলে আরও বেশি সময় নেওয়া হবে।
...EXISTS (SELECT 1...
select 1 from table
টেবিলের প্রতিটি সারিটির জন্য ধ্রুবক 1 প্রদান করবে। এটি কার্যকর যখন আপনি সস্তায় নির্ধারণ করতে চান কিনা রেকর্ডটি আপনার where
ধারা এবং / অথবা এর সাথে মেলে কিনা join
।
যদি আপনি কিছু মানে
SELECT * FROM AnotherTable
WHERE EXISTS (SELECT 1 FROM table WHERE...)
তারপরে এটি একটি পৌরাণিক কাহিনী যা এর 1
চেয়ে ভাল
SELECT * FROM AnotherTable
WHERE EXISTS (SELECT * FROM table WHERE...)
বিদ্যমান 1
বা *
উপেক্ষা করা হয় এবং আপনি এএনএসআই এসকিউএল 1992 স্ট্যান্ডার্ডের পৃষ্ঠা 191 অনুযায়ী এটি লিখতে পারেন :
SELECT * FROM AnotherTable
WHERE EXISTS (SELECT 1/0 FROM table WHERE...)
exists (select 1/0
একটি কবজির মতো কাজ করে
এটি যা বলে তাই করে - এটি সর্বদা পূর্ণসংখ্যাকে ফিরে আসবে It's এটি যেখানে আপনার ক্লজ উপস্থিত রয়েছে সেখানে কোনও রেকর্ড মিলেছে কিনা তা পরীক্ষা করতে ব্যবহৃত হয়।
select 1 from table
কিছু সংখ্যক ডাটাবেস একটি সংযোগটি জীবিত কিনা তা পরীক্ষা করার জন্য ক্যোয়ারী হিসাবে ব্যবহার করা হয়, কোনও সংযোগ পুল থেকে / থেকে সংযোগ পুনরুদ্ধার বা ফেরত দেওয়ার সময় ব্যবহৃত হয়।
যদিও এটি বিস্তৃতভাবে জানা যায় না, একটি ক্যোয়ারিতে কোনও HAVING
ধারা ছাড়াই একটি GROUP BY
ধারা থাকতে পারে।
এই ধরনের পরিস্থিতিতে, HAVING
ধারাটি পুরো সেটটিতে প্রয়োগ করা হয়। স্পষ্টতই, SELECT
ধারাটি কোনও কলামকে উল্লেখ করতে পারে না, অন্যথায় আপনি (সঠিক) ত্রুটিটি পেয়ে যাবেন, "কলামটি নির্বাচনের ক্ষেত্রে অবৈধ কারণ এটি গ্রুপের মাধ্যমে নেই" ইত্যাদি etc.
সুতরাং, একটি আক্ষরিক মান অবশ্যই ব্যবহার করা উচিত (কারণ এসকিউএল শূন্য কলামগুলির সাথে রেজাল্টকে অনুমতি দেয় না - কেন ?!) এবং আক্ষরিক মান 1 ( INTEGER
) সাধারণত ব্যবহৃত হয়: যদি HAVING
ধারাটি মূল্যায়ন করে TRUE
তবে ফলাফলটি একটির সাথে এক সারি হবে কলামটি মান 1 দেখায়, অন্যথায় আপনি খালি সেট পান।
উদাহরণ: কলামে একাধিক স্বতন্ত্র মান রয়েছে কিনা তা সন্ধান করতে:
SELECT 1
FROM tableA
HAVING MIN(colA) < MAX(colA);
SELECT MIN(colA) < MAX(colA) FROM tableA
?
কিছুটা সুনির্দিষ্ট হওয়ার জন্য, আপনি এটি করতে ব্যবহার করবেন
SELECT 1 FROM MyUserTable WHERE user_id = 33487
পরিবর্তে না
SELECT * FROM MyUserTable WHERE user_id = 33487
কারণ আপনি ফলাফলগুলি দেখার বিষয়ে চিন্তা করেন না। ডাটাবেসের জন্য 1 নম্বর জিজ্ঞাসা করা খুব সহজ (যেহেতু এটির কোনও চেহারা দেখার দরকার নেই)।
আপনি যদি জানেন না যে আপনার টেবিলে কোনও ডেটা রয়েছে কি না তবে আপনি নিম্নলিখিত কোয়েরিটি ব্যবহার করতে পারেন:
SELECT cons_value FROM table_name;
উদাহরণস্বরূপ:
SELECT 1 FROM employee;
সুতরাং, আমরা এই এসকিউএল কোয়েরিটি ব্যবহার করি টেবিলের কোনও ডেটা আছে কিনা তা জানতে এবং সারিগুলির সংখ্যা এই সারণীতে কত সারি রয়েছে তা নির্দেশ করে exist
এর অর্থ আপনি আউটপুট হিসাবে " 1 " মান চান বা বেশিরভাগ সময় অভ্যন্তরীণ অনুসন্ধান হিসাবে ব্যবহৃত হয় কারণ কোনও কারণে আপনি অভ্যন্তরীণ প্রশ্নের ফলাফলের উপর ভিত্তি করে বাইরের ক্যোয়ারীগুলি গণনা করতে চান .. আপনি সমস্ত সময় 1 ব্যবহার করেন না তবে আপনি নয় কিছু নির্দিষ্ট মান আছে ...
এটি স্থিতিশীলভাবে আপনাকে মান 1 হিসাবে আউটপুট দেয়।
আপনি যদি কেবল শর্তের ভিত্তিতে কোনও সত্য বা মিথ্যা যাচাই করতে চান তবে টেবিল থেকে 1 নির্বাচন করুন যেখানে শর্তটি সবচেয়ে সস্তা উপায়।
আমি দেখতে পাচ্ছি যে এটি সবসময় এসকিউএল ইঞ্জেকশনে ব্যবহৃত হয়, যেমন:
www.urlxxxxx.com/xxxx.asp?id=99 union select 1,2,3,4,5,6,7,8,9 from database;
এই সংখ্যাগুলি ডাটাবেসটি কোথায় রয়েছে তা অনুমান করতে এবং আপনি যে ডেটাবেসটির নির্দিষ্ট করেছেন সেগুলির কলামের নাম অনুমান করতে ব্যবহার করা যেতে পারে ndআর সারণীর মানগুলি।
এটির সহজ অর্থ হ'ল আপনি টেবিল থেকে প্রথম কলামটি পুনরুদ্ধার করছেন ,,,, এর অর্থ Emply_num, কর্মচারী থেকে Empl_no নির্বাচন করুন; এখানে আপনি কর্মচারীদের থেকে নির্বাচন 1 ব্যবহার করছেন; এর অর্থ আপনি Emply_num কলামটি পুনরুদ্ধার করছেন। ধন্যবাদ
অন্তত মাইএসকিউএলের জন্য কারণটি অন্যটি। এটি মাইএসকিউএল ম্যানুয়াল থেকে
InnoDB সারণীতে এই জাতীয় মানগুলি সংরক্ষণের পরিবর্তে প্রথমবারের মতো কোনও টেবিলের জন্য সূচকের কার্ডিনালিটির মানগুলি গণনা করে। এই পদক্ষেপটি এমন সিস্টেমে উল্লেখযোগ্য সময় নিতে পারে যেগুলি অনেকগুলি টেবিলের মধ্যে ডেটা বিভক্ত করে। যেহেতু এই ওভারহেডটি কেবলমাত্র প্রাথমিক ব্যবহারের টেবিল ওপেন অপারেশনের ক্ষেত্রে প্রযোজ্য, পরে ব্যবহারের জন্য কোনও টেবিলটিকে "উষ্ণ" করতে, শুরু করার পরে অবিলম্বে এটিকে অ্যাক্সেস করুন যেমন 1 টি নির্বাচন করুন tbl_name LIMIT 1
এটি কেবলমাত্র উপস্থিতি () এর সাথে সুবিধার জন্য ব্যবহৃত হয়। অন্যথায় আপনি যেতে পারেন
select * from [table_name]
চিত্র 'যদি উপস্থিত থাকে' এর ক্ষেত্রে, আমাদের কেবল এটি জানতে হবে যে নির্দিষ্ট শর্তযুক্ত যে কোনও সারি উপস্থিত রয়েছে বা সারিটির বিষয়বস্তু কী তা বিবেচনা করে না।
select 1 from Users
উদাহরণস্বরূপ কোড, নম্বর প্রদান। সারিগুলির সংখ্যা সমান। একক কলামে 1 জন ব্যবহারকারী