কিছুই থেকে নির্বাচন?


91

এর মতো বক্তব্য পাওয়া কি সম্ভব?

SELECT "Hello world"
WHERE 1 = 1

এসকিউএল এ?

মূল জিনিসটি আমি জানতে চাই, তা কি আমি কোনও কিছুই থেকে নির্বাচন করতে পারি, অর্থাত্ কোনও FROM ধারা নেই use


4
@ রাফায়েল বেলিয়ার্ডে আপনার মন্তব্য দেখে আপনি আসলে কী করতে চান তা জিজ্ঞাসা করা ভাল। উদাহরণস্বরূপ কোনও প্রদত্ত টেবিলের জন্য মান বিদ্যমান থাকলে আপনি কি কিছু স্ট্রিং ফিরিয়ে দিতে চান?
জিম এল

হ্যাঁ, এটাই আসলে আমি চেয়েছিলাম। আমি জানি যে আমি এটা করতে পারেন, আমি আরো ভাবছি আমি যদি প্রয়োজন ছিল FROM NULLমধ্যে SELECTএবং WHERE। অস্পষ্ট বাক্যাংশগুলি বেশিরভাগ কারণে এটি হোমওয়ার্ক এবং আমি চাইনি যে আমার অন্ত্রের অনুভূতিটি ভুল হলে কোনও ব্যক্তি এসে উত্তরটি আমাকে জানান।
বোস

উত্তর:


141

এটি বিক্রেতাদের জুড়ে সুসংগত নয় - ওরাকল, মাইএসকিউএল এবং ডিবি 2 সমর্থন দ্বৈত:

SELECT 'Hello world'
  FROM DUAL

... যখন এসকিউএল সার্ভার, পোস্টগ্র্যাসকিউএল এবং এসকিউএলাইটের প্রয়োজন হয় না FROM DUAL:

SELECT 'Hello world'

মাইএসকিউএল উভয় উপায়ে সমর্থন করে।


4
আমি সবসময় ভাবতাম। ফ্যান্টম টেবিলের জন্য দ্বৈত শব্দটির পছন্দটি কেন?
অ্যালেক্স ব্লেকমোর

4
@ অ্যালেক্স: "আসল ডিউএল টেবিলে এতে দুটি সারি ছিল (সুতরাং এটির নাম), তবে পরবর্তীকালে এটির কেবল একটি সারি ছিল" "
বিদ্রোহী

7
ডিবি 2 দ্বৈতকে 'sysibm.sysdummy1' বলা হয়
নাবিক

4
পোস্টগ্র্যাস্কল-এ, কল্পনা করা ডামি টেবিল তৈরি করা DUALএবং ভুতের মতো টেবিল থেকে কোয়েরি করা সম্ভব ।
স্টিফান

4
@ অ্যালেক্সব্ল্যাকমোর "আমি ওরাকল ডেটা ডিকশনারিতে অন্তর্নিহিত অবজেক্ট হিসাবে ডুয়াল টেবিলটি তৈরি করেছি It এটি কখনই নিজেকে দেখা হবে বলে বোঝানো হয়নি, বরং এটি এমন একটি দৃষ্টিভঙ্গির অভ্যন্তরে ব্যবহৃত হয়েছিল যা জিজ্ঞাসা করা হবে বলে ধারণা করা হয়েছিল you ধারণাটি ছিল আপনি কোনও জয়েন্ট করতে পারবেন ডুয়াল টেবিল এবং আপনার টেবিলে প্রতি এক সারিতে ফলাফলের জন্য দুটি সারি তৈরি করুন Then তারপরে, গ্রুপের মাধ্যমে, ফলাফলটি যোগটি সংক্ষিপ্ত করে ডেটা পরিমাণ এবং আইএনএডএক্সের পরিমাণ (গুলি) এর জন্য সঞ্চয় স্থানের পরিমাণ দেখাতে পারে। নাম, ডুয়াল, কেবল একটি থেকে একজোড়া সারি তৈরি করার প্রক্রিয়াটির জন্য উপযুক্ত বলে মনে হয়েছে "( en.wikedia.org/wiki/DUAL_table )
ওকে ক্লিক করুন


15

এটা চেষ্টা কর.

একক:

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


4
একমাত্র এএনএসআই এসকিউএল অনুগত উত্তর! (কোনও ডিবিএম নির্দিষ্ট করে দেওয়া কোনও প্রশ্নের কাছে))
জার্নহ

এর উদ্দেশ্য কী WHERE 1 = 1? পোস্টগ্র্রেএসকিউএল এ ছাড়া এটি কাজ করে। নাকি এটি নিয়ে অন্য ডিএমবিএসের উদ্বেগ?
ফ্র্যাঙ্কি ড্রেক

শুধু SELECT * FROM (VALUES ("Hello world")) t1 (col1)এখনও ঠিক আছে। Whereএই প্রশ্নের উত্তর দিন।
চুওংটিভি

@ Chuongtv আপনি একাধিক সারি কীভাবে নির্বাচন করবেন?
হেক্টর

@ হেক্টর এসকিউএল এর সারণি সন্নিবেশ অনুসরণ করুন। এটি পছন্দ করুনSELECT * FROM (VALUES ('Hello world'),('Hello world'),('Hello world')) t1 (col1) WHERE 1 = 1
চুওংটিভি

8

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

ইঙ্গ্রেসের কোনও ডুয়াল নেই, তবে প্রকৃতপক্ষে এটির প্রয়োজন যেমন ইংগ্রে রয়েছে আপনার কোনও হ'ল, গ্রুপ বা গ্রাহক বা ফরোম ধারা ছাড়াই থাকতে পারে না।


6

এসকিউএল সার্ভারে টাইপ করুন:

Select 'Your Text'

FROMবা WHEREধারাটির দরকার নেই ।


5

আপনি পারেন। আমি স্ট্যাক এক্সচেঞ্জ ডেটা এক্সপ্লোরার ক্যোয়ারিতে নিম্নলিখিত লাইনগুলি ব্যবহার করছি :

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'

ডেটা এক্সচেঞ্জটি এসকিউএল সার্ভারের উপর ভিত্তি করে আজুর।
ওএমজি পনিস

2

আমি মনে করি এটি সম্ভব নয়। তাত্ত্বিকভাবে: নির্বাচন দুটি ধরণের জিনিস সম্পাদন করে:

  • সংক্ষিপ্ত / সেট সম্প্রসারণ (সেট-তত্ত্ব);

  • ফলাফল ম্যাপিং

প্রথমটিকে যেখানে অনুচ্ছেদের বিপরীতে অনুভূমিক হ্রাস হিসাবে দেখা যেতে পারে যা উল্লম্বভাবে হ্রাস হিসাবে দেখা যেতে পারে। অন্যদিকে, একটি জোড় সেটটিকে অনুভূমিকভাবে বাড়িয়ে তুলতে পারে যেখানে কোনও ইউনিয়ন উল্লম্বভাবে সেটটিকে বাড়িয়ে তুলতে পারে।

               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"

সুতরাং, আমার উত্তর না হয়। আপনি কেবল বাই-ক্লজটি ছেড়ে দিতে পারবেন না কারণ নির্বাচনের জন্য সর্বদা টেবিল-কলামগুলি সম্পাদন করতে হবে।


2

স্ট্যান্ডার্ড এসকিউএল-তে নেই। একটি WHEREধারা একটি টেবিল এক্সপ্রেশন বোঝায়।

এসকিউএল -২২ স্পেস থেকে:

7.6 "যেখানে ধারা"

ফাংশন

"ধারা থেকে" পূর্ববর্তী ফলাফলের জন্য "অনুসন্ধান শর্ত" প্রয়োগ করে একটি সারণী নির্দিষ্ট করুন।

ঘুরেফিরে:

7.4 "ধারা থেকে"

ফাংশন

এক বা একাধিক নামযুক্ত টেবিল থেকে প্রাপ্ত একটি সারণি নির্দিষ্ট করুন।

এটি করার একটি স্ট্যান্ডার্ড উপায় (যেমন কোনও এসকিউএল পণ্য নিয়ে কাজ করা উচিত):

SELECT DISTINCT 'Hello world' AS new_value
  FROM AnyTableWithOneOrMoreRows
 WHERE 1 = 1;

... ধরে নিয়ে আপনি ধারাটিকে WHEREআরও অর্থবহ কিছুতে পরিবর্তন করতে চান , অন্যথায় এটি বাদ দেওয়া যেতে পারে।


ত্রুটি: কলাম "হ্যালো ওয়ার্ল্ড" my_table তে বিদ্যমান নেই ক্যোয়ারী ব্যর্থ পোস্টগ্রাস এসকিউএল বলেছেন: কলাম "হ্যালো ওয়ার্ল্ড" মাই_টেবিলটিতে নেই
পোল

@ পেলব্রেটবার্গ: এখন একক উদ্ধৃতি হওয়া উচিত now
onedaywhen

প্রক্রিয়াজাতকরণের ক্ষেত্রে কোন টেবিলটি ব্যবহৃত হয় তা বিবেচনা করে? অথবা যে নির্বাচনটি যে কোনও কলামের রেফারেন্স দেয় না তা প্রকৃত টেবিলটিকে অপ্রাসঙ্গিক করে তুলেছে?
অ্যালেন গোল্ড

অ্যালেনগোল্ড: এটি 'বিক্রেতা নির্ভর' হবে তবে স্পষ্টভাবে শর্ট সার্কিটগুলি ব্যবহার করা যেতে পারে যেমন একটি ক্ষেত্রে হ'ল অপ্টিমাইজারটি স্বীকৃতি দেয় SELECT কেবল ধারাটিকে ধ্রুবক হিসাবে অন্তর্ভুক্ত করে এবং এটি AnyTableWithOneOrMoreRowsএকটি সঞ্চিত টেবিল, তাই কেবল টেবিলে আছে কিনা তা যাচাই করার জন্য কেবল পরিসংখ্যান ব্যবহার করে শূন্য সারি
onedaywhen

2

আরও একটি সম্ভাবনা রয়েছে - স্বতন্ত্র 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



1

ফায়ারবার্ডে আপনি এটি করতে পারেন:

select "Hello world" from RDB$DATABASE;

আরডিবি $ ডেটাবেস একটি বিশেষ টেবিল যা সর্বদা একটি সারি থাকে।


0

আমি জানি এটি একটি পুরানো প্রশ্ন তবে আপনার প্রশ্নের সর্বোত্তম কাজটি একটি ডামি সাবকিউরি ব্যবহার করা:

SELECT 'Hello World'
FROM (SELECT name='Nothing') n
WHERE 1=1

ডামি সাবকিউরিটি ফল পরিবর্তন না করেই এফআরওএম ক্লজটি ব্যবহার করতে বাধ্য করায় বাছাই বিবৃতি দেওয়ার পরে আপনি যেখানে ও কোনও ক্লজ (যেমন যোগদান বা প্রয়োগ ইত্যাদি) পেতে পারেন।


4
আপনি এখনও একটি আছে SELECTএকটি ছাড়া FROM, আপনার subquery যাতে এটি এখনও ওরাকল, ইত্যাদি ব্যর্থ হবে
Pere,

ওরাকল এ এমনকি সহজ সরল কারণ আপনি কেবল SELECT 'Hello' FROM dual WHERE 1=1উপগ্রহটি এড়িয়ে যেতে পারেন ।
ডোমিংগোআর

ওপি জিজ্ঞাসা করেছিল যে SELECTকোনও FROMধারা ছাড়াই কোনও বিবৃতি (যথা, ক ) পাওয়া সম্ভব কিনা ? প্রশ্নটা পড়ে না?
পেরে

আমি প্রশ্নটি পড়েছি তবে আপনি এসকিউএল-এ সম্পূর্ণ অনভিজ্ঞ না হয়ে (বা অন্য উত্তরগুলি পড়েন নি) আপনি জানেন যে আপনি WHEREছাড়া থাকতে পারবেন না FROM। এটি দেওয়া, আমি ওপি প্রশ্নের প্রথম বিবৃতিতে জবাব দিয়েছি।
ডোমিংগোআর

ঠিক আছে, এসকিউএল, একটি কম্পিউটিং ডিগ্রীতে আমার 15 বছরেরও বেশি অভিজ্ঞতা আছে এবং মনে নেই যে এখন যদি কোনও WHEREস্ট্যান্ডার্ড এসকিউএল থাকে তবে। আমি অন্যান্য উত্তরও পড়েছি। যাইহোক, যথাযথ জিনিসটি হ'ল আপনার একটি SELECTছাড়া একটি থাকতে পারে নাFROM , "একটি WHEREছাড়া FROM" (?) নয়। আপনার জিজ্ঞাসা কোথায় কাজ করে, @ ডোমিংগোআর? এটি এখনও SELECTএকটি FROM(সাবকিউরিতে) ছাড়াই রয়েছে , সুতরাং সেইসব ডিবিএমএসের ব্যর্থতা FROMযা একটি ছাড়া প্রশ্ন থাকা এবং কেবলমাত্র স্ট্যান্ডার্ড এসকিউএল থেকে বিচ্যুত হওয়া FROMএবং সেই সাথে একটি না থাকার অনুমতি দেয় না এমন ক্ষেত্রে কাজ করার অনুমতি দেয় না SELECT। সুতরাং আপনার উত্তর কিছুই জন্য কাজ করে।
পেরে

0

আমি ফায়ারবার্ড ব্যবহার করছি সবার আগে, "নোটবেল" এর মতো একটি কলাম টেবিল তৈরি করুন

CREATE TABLE NOTABLE 
(
  NOCOLUMN              INTEGER
);
INSERT INTO NOTABLE VALUES (0); -- You can put any value

এখন আপনি এই লিখতে পারেন

select 'hello world' as name

উল্লেখযোগ্য থেকে

আপনি প্রদর্শিত হতে চান যে কোনও কলাম যুক্ত করতে পারেন


0

ডিবি 2 এর জন্য:

`VALUES('Hello world')`

আপনি একাধিক "সারি" করতে পারেন:

`VALUES('Hello world'),('Goodbye world');`

এমনকি আপনি যতক্ষণ প্রকারের সাথে মেলে ততক্ষণ এগুলিতে যোগ দিতে পারেন:

VALUES(1,'Hello world')
UNION ALL
VALUES(2,'Goodbye world');
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.