ইউনিয়ন [সমস্ত] এর সাথে SELECT INTO ধারাটি ব্যবহার করা কি সম্ভব?


154

এসকিউএল সার্ভারে এটি গ্রাহক টেবিল থেকে tmpFerdeen এ 100 রেকর্ড সন্নিবেশ করায়: -

SELECT top(100)*
INTO tmpFerdeen
FROM Customers

ইউনিয়ন সমস্ত নির্বাচন করে কী কী নির্বাচন করা সম্ভব: -

SELECT top(100)* 
FROM Customers
UNION All
SELECT top(100)* 
FROM CustomerEurope
UNION All
SELECT top(100)* 
FROM CustomerAsia
UNION All
SELECT top(100)* 
FROM CustomerAmericas

INTO ধারাটি কোথায় যুক্ত করবেন তা খুব নিশ্চিত নন।


আপনি কি ইউনিয়ন সব প্রয়োজন নিশ্চিত?
sfossen

হ্যাঁ. রেকর্ডগুলি সমস্ত টেবিল জুড়ে অনন্য।
ফেরদিন

উত্তর:


214

এটি এসকিউএল সার্ভারে কাজ করে:

SELECT * INTO tmpFerdeen FROM (
  SELECT top 100 * 
  FROM Customers
  UNION All
  SELECT top 100 * 
  FROM CustomerEurope
  UNION All
  SELECT top 100 * 
  FROM CustomerAsia
  UNION All
  SELECT top 100 * 
  FROM CustomerAmericas
) as tmp

1
এছাড়াও এটি কাজ করে 100 শীর্ষস্থানীয় * গ্রাহক ইউনিয়ন থেকে tmpFerdeen All SELECT শীর্ষ 100 * গ্রাহক ইউরোপ ইউনিয়ন থেকে সমস্ত নির্বাচিত শীর্ষ 100 * গ্রাহকআশিয়া ইউনিয়ন থেকে সমস্ত নির্বাচিত শীর্ষ 100 * থেকে গ্রাহকআমেরিকাস (দুঃখিত, এখানে এসকিএলটি ফর্ম্যাট করতে পারবেন না)। ধন্যবাদ!
ফেরদিন

7
"As tmp" এর তাত্পর্য কী?
ডেভ

@ ক্রিসভ্যানঅ্যাপস্টাল, আপনি কেন শীর্ষ 100 নির্বাচন করেছেন? যখন আমরা সমস্ত রেকর্ড নির্বাচন করি ততক্ষণে ত্রুটিটি দেয় - "অর্ডার বাই দফাটি ভিউ, ইনলাইন ফাংশন, উত্পন্ন টেবিল, সাবকিউরিজ এবং সাধারণ সারণী এক্সপ্রেশনগুলিতে অবৈধ unless দয়া করে কিছু সমাধান দিন।
শৈলেশদেব

1
@ ডেভ যা জিজ্ঞাসা করেছিল সে সম্পর্কে হাই, আমি দেখতে পেয়েছি যে "tmp হিসাবে" অপসারণের ফলে "id, or quoted_id হিসাবে প্রত্যাশা করা ভুল সিনট্যাক্স" হয় error সুতরাং এটি কি জন্য ব্যবহার করা হয়?
রভিড গোল্ডেনবার্গ

4
@ ডেভ, পেট্রিক: এসকিউএল সার্ভারে অস্থায়ী সারণীগুলির একটি নাম দেওয়া দরকার। এখানেই শেষ. টিএমপি এসকিউএল স্টেটমেন্টকে বৈধ করে তোলা ব্যতীত অন্য কোনও কার্য সম্পাদন করে না। ওরাকল এসকিউএল-তে উদাহরণস্বরূপ, এটি alচ্ছিক।
ওয়াউটার

130

এর জন্য আপনার কোনও উত্সযুক্ত টেবিলের দরকার নেই।

শুধু INTOপ্রথম পরে রাখুনSELECT

SELECT top(100)* 
INTO tmpFerdeen
FROM Customers
UNION All
SELECT top(100)* 
FROM CustomerEurope
UNION All
SELECT top(100)* 
FROM CustomerAsia
UNION All
SELECT top(100)* 
FROM CustomerAmericas

2
আমি একমত নই - যদিও উপরের
উত্তরটিও

5
SELECT * INTO tmpFerdeen FROM 
(SELECT top(100)*  
FROM Customers 
UNION All 
SELECT top(100)*  
FROM CustomerEurope 
UNION All 
SELECT top(100)*  
FROM CustomerAsia 
UNION All 
SELECT top(100)*  
FROM CustomerAmericas) AS Blablabal

এই "ব্লেব্লাবাল" প্রয়োজনীয়


1

এমএস অ্যাক্সেস প্রশ্নের জন্য, এটি কাজ করেছে:

SELECT * INTO tmpFerdeen FROM( 
    SELECT top(100) *
    FROM Customers 
UNION All 
    SELECT top(100) *  
    FROM CustomerEurope 
UNION All 
    SELECT top(100) *  
    FROM CustomerAsia 
UNION All 
    SELECT top(100) *  
    FROM CustomerAmericas
) 

এটি এমএস অ্যাক্সেসে কাজ করে না

SELECT top(100) * 
  INTO tmpFerdeen
  FROM Customers
UNION All
  SELECT top(100) * 
  FROM CustomerEurope
UNION All
  SELECT top(100) * 
  FROM CustomerAsia
UNION All
  SELECT top(100) * 
  FROM CustomerAmericas

1

আমি এটি এইভাবে করব:

SELECT top(100)* into #tmpFerdeen
FROM Customers

Insert into #tmpFerdeen
SELECT top(100)* 
FROM CustomerEurope

Insert into #tmpFerdeen
SELECT top(100)* 
FROM CustomerAsia

Insert into #tmpFerdeen
SELECT top(100)* 
FROM CustomerAmericas

0

সমাধানের সাথে আমি যে চ্যালেঞ্জটি দেখছি:

FROM( 
SELECT top(100) *
    FROM Customers 
UNION
    SELECT top(100) *  
    FROM CustomerEurope 
UNION 
    SELECT top(100) *  
    FROM CustomerAsia 
UNION
    SELECT top(100) *  
    FROM CustomerAmericas
)

এটি এটি একটি উইন্ডোড ডেটা সেট তৈরি করে যা র‌্যামে থাকবে এবং বৃহত্তর ডেটা সেটগুলিতে এই সমাধানটি গুরুতর পারফরম্যান্সের সমস্যা তৈরি করবে কারণ এটি প্রথমে পার্টিশনটি তৈরি করতে হবে এবং তারপরে এটি টেম্প টেবিলে লেখার জন্য পার্টিশনটি ব্যবহার করবে।

আরও ভাল সমাধান নিম্নলিখিত হবে:

SELECT top(100)* into #tmpFerdeen
FROM Customers

Insert into #tmpFerdeen
SELECT top(100)* 
FROM CustomerEurope

Insert into #tmpFerdeen
SELECT top(100)* 
FROM CustomerAsia

Insert into #tmpFerdeen
SELECT top(100)* 
FROM CustomerAmericas

টেম্প টেবিলের মধ্যে সন্নিবেশ নির্বাচন করতে এবং তারপরে অতিরিক্ত সারি যুক্ত করতে। তথ্যের মধ্যে যদি কোনও সদৃশ সারি থাকে তবে এখানে ড্র আঁকতে হবে।

সেরা সমাধান নিম্নলিখিত হবে:

Insert into #tmpFerdeen
SELECT top(100)* 
FROM Customers
UNION
SELECT top(100)* 
FROM CustomerEurope
UNION
SELECT top(100)* 
FROM CustomerAsia
UNION
SELECT top(100)* 
FROM CustomerAmericas

এই পদ্ধতিটি এমন সমস্ত উদ্দেশ্যে কাজ করা উচিত যাতে স্বতন্ত্র সারি প্রয়োজন। তবে, আপনি যদি ডুপ্লিকেট সারিগুলি কেবলমাত্র ইউনিয়ন সকলের জন্য ইউনিয়নটি সরিয়ে নিতে চান

ভাগ্য সুপ্রসন্ন হোক!


-1

এই চেষ্টা করতে পারেন?

SELECT * INTO tmpFerdeen (
SELECT top(100)* 
FROM Customers
UNION All
SELECT top(100)* 
FROM CustomerEurope
UNION All
SELECT top(100)* 
FROM CustomerAsia
UNION All
SELECT top(100)* 
FROM CustomerAmericas)

প্রয়োজনীয় টেবিল ওরফে মিস করা (এবং যোগ করা থাকলে এটি গ্রহণযোগ্য উত্তর হিসাবে একই হবে)
মার্টিন স্মিথ

-3

এর মতো কিছু চেষ্টা করুন: ইউনিয়নের কাঠামো সহ চূড়ান্ত অবজেক্ট টেবিল তৈরি করুন, tmpFerdeen।

তারপর

INSERT INTO tmpFerdeen (
SELECT top(100)* 
FROM Customers
UNION All
SELECT top(100)* 
FROM CustomerEurope
UNION All
SELECT top(100)* 
FROM CustomerAsia
UNION All
SELECT top(100)* 
FROM CustomerAmericas
)

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