এসকিউএল মাল্টি-ভেরিয়েবলের মধ্যে বহু-কলামগুলি নির্বাচন করুন


86

আমি এসিকিউএল টেরাদাতা থেকে এসকিউএল সার্ভারে রূপান্তর করছি

তেরদাটাতে, তাদের ফর্ম্যাট রয়েছে

SELECT col1, col2
FROM table1
INTO @variable1, @variable2

এসকিউএল সার্ভারে, আমি খুঁজে পেয়েছি

SET @variable1 = (
SELECT col1 
FROM table1
);

যা প্রতি বিবৃতিতে কেবল একটি একক কলাম / ভেরিয়েবলের অনুমতি দেয়। একটি একক নির্বাচনী বিবৃতি ব্যবহার করে কীভাবে 2 বা আরও ভেরিয়েবল বরাদ্দ করা যায়?

উত্তর:


173
SELECT @variable1 = col1, @variable2 = col2
FROM table1

একাধিক SELECT এর তুলনায় এই কাজটি কি পারফরম্যান্স / গতির উন্নতি করবে নাকি এটি একই?
শঙ্কর নাথান

8
আসল উত্তরটি এটি পরীক্ষা করা এবং নিজের জন্য দেখুন। অনানুষ্ঠানিক উত্তর হ্যাঁ অবশ্যই, সম্ভবত।
আন্ডারস্কোর_ড ই

35
SELECT @var = col1,
       @var2 = col2
FROM   Table

SET / নির্বাচন সম্পর্কে কিছু আকর্ষণীয় তথ্য এখানে

  • ভেরিয়েবল অ্যাসাইনমেন্টের জন্য এসইটি হ'ল এএনএসআই স্ট্যান্ডার্ড, নির্বাচন নয়।
  • SET একবারে কেবল একটি ভেরিয়েবল বরাদ্দ করতে পারে, SELECT একবারে একাধিক অ্যাসাইনমেন্ট দিতে পারে।
  • যদি কোনও কোয়েরি থেকে বরাদ্দ করা হয় তবে এসইটি কেবল একটি স্কেলারের মান নির্ধারণ করতে পারে। যদি কোয়েরিতে একাধিক মান / সারি ফিরে আসে তবে SET ত্রুটি বাড়িয়ে তুলবে। নির্বাচনটি ভেরিয়েবলের মধ্যে একটি মান নির্ধারণ করে এবং একাধিক মান ফিরে আসার বিষয়টি লুকিয়ে রাখে (সুতরাং আপনি সম্ভবত কখনই বুঝতে পারবেন না যে কেন অন্য কোথাও ভুল হচ্ছে - মজাদার সমস্যা সমাধানে মজা করুন)
  • যখন কোনও কোয়েরি থেকে নির্ধারণের সময় যদি কোনও মান ফেরত না থাকে তবে SET NULL প্রদান করবে, যেখানে SELECT মোটেও অ্যাসাইনমেন্টটি করবে না (সুতরাং পূর্বের মান থেকে পরিবর্তনশীলটি পরিবর্তন হবে না)
  • যতদূর গতির পার্থক্য - সেট এবং সেলেকের মধ্যে সরাসরি কোনও পার্থক্য নেই। তবে একটি শটে একাধিক অ্যাসাইনমেন্ট করার জন্য SELECT এর ক্ষমতা সেটকে এটির চেয়ে সামান্য গতির সুবিধা দেয়।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.