টেবিল থেকে 1 নির্বাচন করে এর অর্থ কী?


146

আমি নীচে কিছু দিয়ে অনেক প্রশ্ন দেখেছি।

Select 1  
From table

এর 1অর্থ কী, কীভাবে এটি কার্যকর করা হবে এবং কী ফিরে আসবে?

এছাড়াও, কোন ধরণের পরিস্থিতিতে এটি ব্যবহার করা যেতে পারে?


আমাদের সম্পূর্ণ জিজ্ঞাসা প্রদর্শন করুন
gbn

উত্তর:


107

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 *, কারণ এটি প্রায়শই এমন হয় যে ডিবি কোনও ভাষায় ফিরে আসে এমন আরও কলামগুলি, তত বেশি ডেটা কাঠামো, যার ফলে আরও বেশি সময় নেওয়া হবে।


এবং কেন অস্তিত্বের সাথে "সাধারণত"? আপনার কাছে প্রমাণ আছে কেন ?
gbn

6
এবং একটি -1 পৌরাণিক কাহিনী প্রচারের জন্য...EXISTS (SELECT 1...
gbn

2
@ জিবিএন আমি জানি না কেন আমি এটি অন্য যে কোনও কিছুর চেয়ে বহুবার দেখেছি seen আমি এখানে এটি আরও অনেকবার দেখেছি।
cwlenlenpoole

2
একটি স্নিগ্ধ মুরগী? তা খেতে পছন্দ করবে না! সম্ভবত এটি 'দুষ্ট মুরগী ​​এবং ডিমের সমস্যা' হওয়া উচিত?
ন'ম নিউম্যান

2
@ বেন: ইন এবং উপস্থিতি সাধারণত একই পরিকল্পনায় অনুকূল হয়ে
উঠবেন

106

select 1 from tableটেবিলের প্রতিটি সারিটির জন্য ধ্রুবক 1 প্রদান করবে। এটি কার্যকর যখন আপনি সস্তায় নির্ধারণ করতে চান কিনা রেকর্ডটি আপনার whereধারা এবং / অথবা এর সাথে মেলে কিনা join


1
এই উত্তরটি আমার কাছে সবচেয়ে বেশি
অর্থবোধ

2
আসলে খুব গুরুত্বপূর্ণ বিষয়: " টেবিলের প্রতিটি সারির জন্য "। এই অংশ হিসাবে "টেবিল প্রাপ্যতা" পরীক্ষা করা, উদাহরণস্বরূপ, কয়েক মিলিয়ন সারি সহ একটি টেবিলের স্বাস্থ্য পরীক্ষা, শত মিলিয়ন "1" এর ফলাফলের সমাপ্তিতে শেষ হবে। (দ্রষ্টব্য: না যে, এ বাগান কখনও ঘটতে পারে ... উৎপাদনে;);))
কনিকে

আক্ষরিক অর্থে, এটি এখানে গ্রহণযোগ্য উত্তর হওয়া উচিত!
ফাহাদ জাভেদ

40

যদি আপনি কিছু মানে

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...) 

1
কেবল যাচাই করা হয়েছে যে পোস্টগ্র্রেস এটি শ্রদ্ধা করে, exists (select 1/0একটি কবজির মতো কাজ করে
এলেক্স

22

এটি যা বলে তাই করে - এটি সর্বদা পূর্ণসংখ্যাকে ফিরে আসবে It's এটি যেখানে আপনার ক্লজ উপস্থিত রয়েছে সেখানে কোনও রেকর্ড মিলেছে কিনা তা পরীক্ষা করতে ব্যবহৃত হয়।


22
আহ - প্রশ্নটি ছিল "এর অর্থ কী", না "এটি এই ভাল অনুশীলন"। আমি সম্মতি জানাই পারফরম্যান্স দৃষ্টিকোণ থেকে এটি কোনও পার্থক্য রাখে না - তবে এটি এমন একটি সম্মেলন যা বিকাশকারীরা সম্ভবত ব্যবহার করেন কারণ 1 সাধারণত "সত্য" হিসাবে ব্যাখ্যা করা হয় use
নেভিল কুয়েট

20

select 1 from table কিছু সংখ্যক ডাটাবেস একটি সংযোগটি জীবিত কিনা তা পরীক্ষা করার জন্য ক্যোয়ারী হিসাবে ব্যবহার করা হয়, কোনও সংযোগ পুল থেকে / থেকে সংযোগ পুনরুদ্ধার বা ফেরত দেওয়ার সময় ব্যবহৃত হয়।


2
এটি আমার ক্ষেত্রে ছিল, এটি জেবিওএস এবং টমক্যাট অ্যাপ্লিকেশনগুলির মধ্যে বেশ সাধারণ।
ভালটার সিলভা

13

ফলাফলটি 1টেবিলের প্রতিটি রেকর্ডের জন্য। __


আসলেই নয়, আমি একটি খালি টেবিল তৈরি করার চেষ্টা করেছি এবং কোয়েরিটি কার্যকর করলাম, ফলাফলটি ছয় 1 টি।
r0ng

9

যদিও এটি বিস্তৃতভাবে জানা যায় না, একটি ক্যোয়ারিতে কোনও HAVINGধারা ছাড়াই একটি GROUP BYধারা থাকতে পারে।

এই ধরনের পরিস্থিতিতে, HAVINGধারাটি পুরো সেটটিতে প্রয়োগ করা হয়। স্পষ্টতই, SELECTধারাটি কোনও কলামকে উল্লেখ করতে পারে না, অন্যথায় আপনি (সঠিক) ত্রুটিটি পেয়ে যাবেন, "কলামটি নির্বাচনের ক্ষেত্রে অবৈধ কারণ এটি গ্রুপের মাধ্যমে নেই" ইত্যাদি etc.

সুতরাং, একটি আক্ষরিক মান অবশ্যই ব্যবহার করা উচিত (কারণ এসকিউএল শূন্য কলামগুলির সাথে রেজাল্টকে অনুমতি দেয় না - কেন ?!) এবং আক্ষরিক মান 1 ( INTEGER) সাধারণত ব্যবহৃত হয়: যদি HAVINGধারাটি মূল্যায়ন করে TRUEতবে ফলাফলটি একটির সাথে এক সারি হবে কলামটি মান 1 দেখায়, অন্যথায় আপনি খালি সেট পান।

উদাহরণ: কলামে একাধিক স্বতন্ত্র মান রয়েছে কিনা তা সন্ধান করতে:

SELECT 1
  FROM tableA
HAVING MIN(colA) < MAX(colA);

"স্পষ্টতই, SELECT বাক্যাংশে যেকোনো কলাম পড়ুন না পারেন," - চাই তা একটি bool অভিব্যক্তি নির্বাচন করতে অধিক যুক্তিসঙ্গত হতে: SELECT MIN(colA) < MAX(colA) FROM tableA?
পল স্পিগেল

7

কিছুটা সুনির্দিষ্ট হওয়ার জন্য, আপনি এটি করতে ব্যবহার করবেন

SELECT 1 FROM MyUserTable WHERE user_id = 33487

পরিবর্তে না

SELECT * FROM MyUserTable WHERE user_id = 33487

কারণ আপনি ফলাফলগুলি দেখার বিষয়ে চিন্তা করেন না। ডাটাবেসের জন্য 1 নম্বর জিজ্ঞাসা করা খুব সহজ (যেহেতু এটির কোনও চেহারা দেখার দরকার নেই)।


উপরের মতামত অনুসারে, দেখে মনে হচ্ছে সিলেক্ট 1 সিলেক্ট করার চেয়ে পারফরম্যান্সে আর ভাল নয়, তাই কি তাই?
eRaisedToX

5

আপনি যদি জানেন না যে আপনার টেবিলে কোনও ডেটা রয়েছে কি না তবে আপনি নিম্নলিখিত কোয়েরিটি ব্যবহার করতে পারেন:

SELECT cons_value FROM table_name;

উদাহরণস্বরূপ:

SELECT 1 FROM employee;
  1. এটি এমন একটি কলাম ফেরত দেবে যাতে মোট সারির সংখ্যা থাকে এবং সমস্ত সারিতে একই ধ্রুবক মান 1 থাকে (এই সময়ের জন্য এটি সমস্ত সারির জন্য 1 প্রদান করে);
  2. যদি আপনার টেবিলটিতে কোনও সারি না থাকে তবে এটি কিছুই ফিরিয়ে দেবে না।

সুতরাং, আমরা এই এসকিউএল কোয়েরিটি ব্যবহার করি টেবিলের কোনও ডেটা আছে কিনা তা জানতে এবং সারিগুলির সংখ্যা এই সারণীতে কত সারি রয়েছে তা নির্দেশ করে exist


3

এর অর্থ আপনি আউটপুট হিসাবে " 1 " মান চান বা বেশিরভাগ সময় অভ্যন্তরীণ অনুসন্ধান হিসাবে ব্যবহৃত হয় কারণ কোনও কারণে আপনি অভ্যন্তরীণ প্রশ্নের ফলাফলের উপর ভিত্তি করে বাইরের ক্যোয়ারীগুলি গণনা করতে চান .. আপনি সমস্ত সময় 1 ব্যবহার করেন না তবে আপনি নয় কিছু নির্দিষ্ট মান আছে ...

এটি স্থিতিশীলভাবে আপনাকে মান 1 হিসাবে আউটপুট দেয়।


3

আপনি যদি কেবল শর্তের ভিত্তিতে কোনও সত্য বা মিথ্যা যাচাই করতে চান তবে টেবিল থেকে 1 নির্বাচন করুন যেখানে শর্তটি সবচেয়ে সস্তা উপায়।


2

আমি দেখতে পাচ্ছি যে এটি সবসময় এসকিউএল ইঞ্জেকশনে ব্যবহৃত হয়, যেমন:

www.urlxxxxx.com/xxxx.asp?id=99 union select 1,2,3,4,5,6,7,8,9 from database;

এই সংখ্যাগুলি ডাটাবেসটি কোথায় রয়েছে তা অনুমান করতে এবং আপনি যে ডেটাবেসটির নির্দিষ্ট করেছেন সেগুলির কলামের নাম অনুমান করতে ব্যবহার করা যেতে পারে ndআর সারণীর মানগুলি।


0

এটির সহজ অর্থ হ'ল আপনি টেবিল থেকে প্রথম কলামটি পুনরুদ্ধার করছেন ,,,, এর অর্থ Emply_num, কর্মচারী থেকে Empl_no নির্বাচন করুন; এখানে আপনি কর্মচারীদের থেকে নির্বাচন 1 ব্যবহার করছেন; এর অর্থ আপনি Emply_num কলামটি পুনরুদ্ধার করছেন। ধন্যবাদ


আমি এই জাতীয় বাক্য গঠনটি মনে রাখি, তবে এটি এমন ডেটাবেসের সাথে সুনির্দিষ্ট যে আমি মনে করতে পারি না। PostgreSQL?
দিয়াণেওয়ালা

0

অন্তত মাইএসকিউএলের জন্য কারণটি অন্যটি। এটি মাইএসকিউএল ম্যানুয়াল থেকে

InnoDB সারণীতে এই জাতীয় মানগুলি সংরক্ষণের পরিবর্তে প্রথমবারের মতো কোনও টেবিলের জন্য সূচকের কার্ডিনালিটির মানগুলি গণনা করে। এই পদক্ষেপটি এমন সিস্টেমে উল্লেখযোগ্য সময় নিতে পারে যেগুলি অনেকগুলি টেবিলের মধ্যে ডেটা বিভক্ত করে। যেহেতু এই ওভারহেডটি কেবলমাত্র প্রাথমিক ব্যবহারের টেবিল ওপেন অপারেশনের ক্ষেত্রে প্রযোজ্য, পরে ব্যবহারের জন্য কোনও টেবিলটিকে "উষ্ণ" করতে, শুরু করার পরে অবিলম্বে এটিকে অ্যাক্সেস করুন যেমন 1 টি নির্বাচন করুন tbl_name LIMIT 1


0

এটি কেবলমাত্র উপস্থিতি () এর সাথে সুবিধার জন্য ব্যবহৃত হয়। অন্যথায় আপনি যেতে পারেন

select * from [table_name]

চিত্র 'যদি উপস্থিত থাকে' এর ক্ষেত্রে, আমাদের কেবল এটি জানতে হবে যে নির্দিষ্ট শর্তযুক্ত যে কোনও সারি উপস্থিত রয়েছে বা সারিটির বিষয়বস্তু কী তা বিবেচনা করে না।

select 1 from Users

উদাহরণস্বরূপ কোড, নম্বর প্রদান। সারিগুলির সংখ্যা সমান। একক কলামে 1 জন ব্যবহারকারী

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.