এর মতো বক্তব্য পাওয়া কি সম্ভব?
SELECT "Hello world"
WHERE 1 = 1
এসকিউএল এ?
মূল জিনিসটি আমি জানতে চাই, তা কি আমি কোনও কিছুই থেকে নির্বাচন করতে পারি, অর্থাত্ কোনও FROM ধারা নেই use
এর মতো বক্তব্য পাওয়া কি সম্ভব?
SELECT "Hello world"
WHERE 1 = 1
এসকিউএল এ?
মূল জিনিসটি আমি জানতে চাই, তা কি আমি কোনও কিছুই থেকে নির্বাচন করতে পারি, অর্থাত্ কোনও FROM ধারা নেই use
FROM NULLমধ্যে SELECTএবং WHERE। অস্পষ্ট বাক্যাংশগুলি বেশিরভাগ কারণে এটি হোমওয়ার্ক এবং আমি চাইনি যে আমার অন্ত্রের অনুভূতিটি ভুল হলে কোনও ব্যক্তি এসে উত্তরটি আমাকে জানান।
উত্তর:
এটি বিক্রেতাদের জুড়ে সুসংগত নয় - ওরাকল, মাইএসকিউএল এবং ডিবি 2 সমর্থন দ্বৈত:
SELECT 'Hello world'
FROM DUAL
... যখন এসকিউএল সার্ভার, পোস্টগ্র্যাসকিউএল এবং এসকিউএলাইটের প্রয়োজন হয় না FROM DUAL:
SELECT 'Hello world'
মাইএসকিউএল উভয় উপায়ে সমর্থন করে।
DUALএবং ভুতের মতো টেবিল থেকে কোয়েরি করা সম্ভব ।
এটা চেষ্টা কর.
একক:
SELECT * FROM (VALUES ('Hello world')) t1 (col1) WHERE 1 = 1
বহু:
SELECT * FROM (VALUES ('Hello world'),('Hello world'),('Hello world')) t1 (col1) WHERE 1 = 1
এখানে আরো বিস্তারিত: http://modern-sql.com/use-case/select-without-from
WHERE 1 = 1? পোস্টগ্র্রেএসকিউএল এ ছাড়া এটি কাজ করে। নাকি এটি নিয়ে অন্য ডিএমবিএসের উদ্বেগ?
SELECT * FROM (VALUES ("Hello world")) t1 (col1)এখনও ঠিক আছে। Whereএই প্রশ্নের উত্তর দিন।
SELECT * FROM (VALUES ('Hello world'),('Hello world'),('Hello world')) t1 (col1) WHERE 1 = 1
Https://blog.jooq.org/tag/dual-table/ থেকে দ্বৈত ডাটাবেস সমর্থনের সর্বাধিক সম্পূর্ণ তালিকা :
অন্য অনেকগুলি আরডিবিএমএসে, ডামি টেবিলের প্রয়োজন নেই, আপনি যেমন বিবৃতি দিতে পারেন:
SELECT 1; SELECT 1 + 1; SELECT SQRT(2);এগুলি আরডিবিএমএস, যেখানে উপরেরগুলি সাধারণত সম্ভব:
- এইচ 2
- মাইএসকিউএল
- উপকরণ
- পোস্টগ্রিস
- এসকিউএলাইট
- SQL সার্ভার
- সিবাস বেস এএসই
অন্যান্য আরডিবিএমএসে, ওরাকলের মতো ডামি টেবিলগুলি প্রয়োজন। সুতরাং, আপনাকে এই জাতীয় জিনিস লিখতে হবে:
SELECT 1 FROM DUAL; SELECT 1 + 1 FROM DUAL; SELECT SQRT(2) FROM DUAL;এগুলি আরডিবিএমএস এবং তাদের সম্পর্কিত ডামি টেবিলগুলি:
- ডিবি 2: এসওয়াইএসবিএম.ডিউএল
- ডার্বি: SYSIBM.SYSDUMMY1
- এইচ 2: Uচ্ছিকভাবে ডুয়াল সমর্থন করে
- এইচএসকিউএলডিবি: INFORMATION_SCHEMA.SYSTEM_USERS
- মাইএসকিউএল: Uচ্ছিকভাবে ডুয়াল সমর্থন করে
- ওরাকল: ডুয়াল
- সিবাজ এসকিউএল যে কোনও জায়গায়: SYS.DUMMY
ইঙ্গ্রেসের কোনও ডুয়াল নেই, তবে প্রকৃতপক্ষে এটির প্রয়োজন যেমন ইংগ্রে রয়েছে আপনার কোনও হ'ল, গ্রুপ বা গ্রাহক বা ফরোম ধারা ছাড়াই থাকতে পারে না।
আপনি পারেন। আমি স্ট্যাক এক্সচেঞ্জ ডেটা এক্সপ্লোরার ক্যোয়ারিতে নিম্নলিখিত লাইনগুলি ব্যবহার করছি :
SELECT
(SELECT COUNT(*) FROM VotesOnPosts WHERE VoteTypeName = 'UpMod' AND UserId = @UserID AND PostTypeId = 2) AS TotalUpVotes,
(SELECT COUNT(*) FROM Answers WHERE UserId = @UserID) AS TotalAnswers
ডেটা এক্সচেঞ্জটি লেনদেন-এসকিউএল (এসকিউএল-এর এসকিউএল সার্ভারের স্বত্বাধিকারী এক্সটেনশনগুলি) ব্যবহার করে।
আপনি নিজের মতো একটি ক্যোয়ারী চালিয়ে চেষ্টা করে দেখতে পারেন:
SELECT 'Hello world'
আমি মনে করি এটি সম্ভব নয়। তাত্ত্বিকভাবে: নির্বাচন দুটি ধরণের জিনিস সম্পাদন করে:
সংক্ষিপ্ত / সেট সম্প্রসারণ (সেট-তত্ত্ব);
ফলাফল ম্যাপিং
প্রথমটিকে যেখানে অনুচ্ছেদের বিপরীতে অনুভূমিক হ্রাস হিসাবে দেখা যেতে পারে যা উল্লম্বভাবে হ্রাস হিসাবে দেখা যেতে পারে। অন্যদিকে, একটি জোড় সেটটিকে অনুভূমিকভাবে বাড়িয়ে তুলতে পারে যেখানে কোনও ইউনিয়ন উল্লম্বভাবে সেটটিকে বাড়িয়ে তুলতে পারে।
augmentation diminishing
horizontal join/select select
vertical union where/inner-join
দ্বিতীয়টি ম্যাপিং। একটি ম্যাপিং, আরও রূপান্তরকারী। এসকিউএলে এটি কিছু ক্ষেত্র নেয় এবং শূন্য বা আরও বেশি ক্ষেত্র দেয়। নির্বাচনের ক্ষেত্রে, আপনি কিছু সমষ্টিগত ফাংশন যেমন, যোগফল, গড় ইত্যাদি ব্যবহার করতে পারেন বা সমস্ত কলাম মূল্যগুলিকে স্ট্রিংয়ে রূপান্তর করতে পারেন। সি # লিন্কে, আমরা বলি যে একটি নির্বাচন টি টাইপ টির একটি অবজেক্ট গ্রহণ করে এবং ইউ টাইপের একটি অবজেক্টকে প্রদান করে returns
আমি মনে করি বিভ্রান্তি সত্য দ্বারা আসে আপনি কি করতে পারেন যে: select 'howdy' from <table_name>। এই বৈশিষ্ট্যটি ম্যাপিং, নির্বাচনের রূপান্তরকারী অংশ। আপনি কিছু মুদ্রণ করছেন না, তবে রূপান্তর করছেন! আপনার উদাহরণে:
SELECT "
WHERE 1 = 1
আপনি কিছুই / নালকে রূপান্তর করছেন "Hello world"এবং আপনি কোনও কিছুর সেট / কোনও টেবিলকে এক সারিতে সংকুচিত করছেন, যা কোনওভাবেই বোঝায় না।
আপনি খেয়াল করতে পারেন, আপনি যদি কলামগুলির সংখ্যা সীমাবদ্ধ না "Hello world"করেন, সারণীতে প্রতিটি উপলভ্য সারিটির জন্য মুদ্রিত করা হবে। আমি আশা করি, আপনি এতক্ষণে বুঝতে পারবেন। তোমার নির্বাচন প্রাপ্তিসাধ্য কলাম থেকে কিছুই নেয় এবং পাঠ্য সহ একটি কলাম তৈরি করে: "Hello world"।
সুতরাং, আমার উত্তর না হয়। আপনি কেবল বাই-ক্লজটি ছেড়ে দিতে পারবেন না কারণ নির্বাচনের জন্য সর্বদা টেবিল-কলামগুলি সম্পাদন করতে হবে।
স্ট্যান্ডার্ড এসকিউএল-তে নেই। একটি WHEREধারা একটি টেবিল এক্সপ্রেশন বোঝায়।
এসকিউএল -২২ স্পেস থেকে:
7.6 "যেখানে ধারা"
ফাংশন
"ধারা থেকে" পূর্ববর্তী ফলাফলের জন্য "অনুসন্ধান শর্ত" প্রয়োগ করে একটি সারণী নির্দিষ্ট করুন।
ঘুরেফিরে:
7.4 "ধারা থেকে"
ফাংশন
এক বা একাধিক নামযুক্ত টেবিল থেকে প্রাপ্ত একটি সারণি নির্দিষ্ট করুন।
এটি করার একটি স্ট্যান্ডার্ড উপায় (যেমন কোনও এসকিউএল পণ্য নিয়ে কাজ করা উচিত):
SELECT DISTINCT 'Hello world' AS new_value
FROM AnyTableWithOneOrMoreRows
WHERE 1 = 1;
... ধরে নিয়ে আপনি ধারাটিকে WHEREআরও অর্থবহ কিছুতে পরিবর্তন করতে চান , অন্যথায় এটি বাদ দেওয়া যেতে পারে।
SELECT কেবল ধারাটিকে ধ্রুবক হিসাবে অন্তর্ভুক্ত করে এবং এটি AnyTableWithOneOrMoreRowsএকটি সঞ্চিত টেবিল, তাই কেবল টেবিলে আছে কিনা তা যাচাই করার জন্য কেবল পরিসংখ্যান ব্যবহার করে শূন্য সারি
আরও একটি সম্ভাবনা রয়েছে - স্বতন্ত্র VALUES() :
VALUES ('Hello World');
আউটপুট:
column1
Hello World
যখন আপনাকে কমপ্যাক্ট উপায়ে একাধিক মান নির্দিষ্ট করতে হবে তখন এটি কার্যকর হয়:
VALUES (1, 'a'), (2, 'b'), (3, 'c');
আউটপুট:
column1 column2
1 a
2 b
3 c
এই বাক্য গঠনটি এসকিউএলাইট / পোস্টগ্রাইএসকিউএল / ডিবি এলইউউ / মারিয়াডিবি 10.3 দ্বারা সমর্থিত supported
আমি জানি এটি একটি পুরানো প্রশ্ন তবে আপনার প্রশ্নের সর্বোত্তম কাজটি একটি ডামি সাবকিউরি ব্যবহার করা:
SELECT 'Hello World'
FROM (SELECT name='Nothing') n
WHERE 1=1
ডামি সাবকিউরিটি ফল পরিবর্তন না করেই এফআরওএম ক্লজটি ব্যবহার করতে বাধ্য করায় বাছাই বিবৃতি দেওয়ার পরে আপনি যেখানে ও কোনও ক্লজ (যেমন যোগদান বা প্রয়োগ ইত্যাদি) পেতে পারেন।
SELECTএকটি ছাড়া FROM, আপনার subquery যাতে এটি এখনও ওরাকল, ইত্যাদি ব্যর্থ হবে
SELECT 'Hello' FROM dual WHERE 1=1উপগ্রহটি এড়িয়ে যেতে পারেন ।
SELECTকোনও FROMধারা ছাড়াই কোনও বিবৃতি (যথা, ক ) পাওয়া সম্ভব কিনা ? প্রশ্নটা পড়ে না?
WHEREছাড়া থাকতে পারবেন না FROM। এটি দেওয়া, আমি ওপি প্রশ্নের প্রথম বিবৃতিতে জবাব দিয়েছি।
WHEREস্ট্যান্ডার্ড এসকিউএল থাকে তবে। আমি অন্যান্য উত্তরও পড়েছি। যাইহোক, যথাযথ জিনিসটি হ'ল আপনার একটি SELECTছাড়া একটি থাকতে পারে নাFROM , "একটি WHEREছাড়া FROM" (?) নয়। আপনার জিজ্ঞাসা কোথায় কাজ করে, @ ডোমিংগোআর? এটি এখনও SELECTএকটি FROM(সাবকিউরিতে) ছাড়াই রয়েছে , সুতরাং সেইসব ডিবিএমএসের ব্যর্থতা FROMযা একটি ছাড়া প্রশ্ন থাকা এবং কেবলমাত্র স্ট্যান্ডার্ড এসকিউএল থেকে বিচ্যুত হওয়া FROMএবং সেই সাথে একটি না থাকার অনুমতি দেয় না এমন ক্ষেত্রে কাজ করার অনুমতি দেয় না SELECT। সুতরাং আপনার উত্তর কিছুই জন্য কাজ করে।
আমি ফায়ারবার্ড ব্যবহার করছি সবার আগে, "নোটবেল" এর মতো একটি কলাম টেবিল তৈরি করুন
CREATE TABLE NOTABLE
(
NOCOLUMN INTEGER
);
INSERT INTO NOTABLE VALUES (0); -- You can put any value
এখন আপনি এই লিখতে পারেন
select 'hello world' as name
উল্লেখযোগ্য থেকে
আপনি প্রদর্শিত হতে চান যে কোনও কলাম যুক্ত করতে পারেন
ডিবি 2 এর জন্য:
`VALUES('Hello world')`
আপনি একাধিক "সারি" করতে পারেন:
`VALUES('Hello world'),('Goodbye world');`
এমনকি আপনি যতক্ষণ প্রকারের সাথে মেলে ততক্ষণ এগুলিতে যোগ দিতে পারেন:
VALUES(1,'Hello world')
UNION ALL
VALUES(2,'Goodbye world');