অস্থায়ী সারণীতে ডেটা .োকানো হচ্ছে


195

একটি অস্থায়ী টেবিল তৈরি করার পরে এবং এর মতো ডেটা ধরণের ঘোষণা করার পরে;

 CREATE TABLE #TempTable(
 ID int,
 Date datetime,
 Name char(20))

এরপরে আমি কীভাবে প্রাসঙ্গিক ডেটা প্রবেশ করবো যা ইতিমধ্যে ডাটাবেসের মধ্যে কোনও শারীরিক টেবিলে রাখা আছে?

উত্তর:


244
INSERT INTO #TempTable (ID, Date, Name) 
SELECT id, date, name 
FROM physical_table

5
এটি শেষ হয়ে গেলে টেবিলটি ফেলে রাখার কথা মনে রাখবেন, অন্যথায় আপনি "ডাটাবেসে ইতিমধ্যে '# টেম্পটেবল' নামে একটি অবজেক্ট আছে is" ত্রুটি (আপনার কি আবার ক্যোয়ারী চালানো উচিত ...)
— Rhdr

প্রাথমিক প্রশ্নটি টেবিল সম্পর্কে ছিল, এটি ইতিমধ্যে তৈরি করা হয়েছিল। টিপটি কার্যকর হওয়ায় এটি লেখকের প্রশ্নের সাথে সংযুক্ত নয়
— অ্যালেক্সসুলিন

98

সমস্ত কলাম থেকে সমস্ত ডেটা Toোকাতে, কেবল এটি ব্যবহার করুন:

SELECT * INTO #TempTable
FROM OriginalTable

DROPএটি শেষ করে এবং আবার এটি তৈরির চেষ্টা করার আগে অস্থায়ী টেবিলটি ভুলে যাবেন না :

DROP TABLE #TempTable

9
আমি এটি পছন্দ করি কারণ আমি করতে হবে নাCREATE#TempTable
— MAbraham1


41

Insertএসকিউএল সার্ভারে আমার উপায় । এছাড়াও আমি সাধারণত পরীক্ষা করি যে কোনও অস্থায়ী টেবিল রয়েছে কিনা।

IF OBJECT_ID('tempdb..#MyTable') IS NOT NULL DROP Table #MyTable

SELECT b.Val as 'bVals'
  INTO #MyTable
FROM OtherTable as b


15

একই সমস্যাটি সমাধান করার জন্য আমি দুটি উপায় প্রদান করেছি,

সমাধান 1: এই পদ্ধতির 2 টি পদক্ষেপ অন্তর্ভুক্ত রয়েছে, প্রথমে নির্দিষ্ট ডেটা টাইপ সহ একটি অস্থায়ী টেবিল তৈরি করুন, পরবর্তী বিদ্যমান ডাটা টেবিল থেকে মান সন্নিবেশ করুন।

CREATE TABLE #TempStudent(tempID  int, tempName  varchar(MAX) )
INSERT INTO #TempStudent(tempID, tempName) SELECT id, studName FROM students where id =1

SELECT * FROM #TempStudent

সমাধান 2: এই পদ্ধতিটি সহজ, যেখানে আপনি অস্থায়ী টেবিলের মধ্যে মানগুলি সরাসরি সন্নিবেশ করতে পারেন, যেখানে স্বয়ংক্রিয়ভাবে সিস্টেম একই ডাটা টাইপের মূল টেবিলের সাহায্যে টেম্প টেবিল তৈরির যত্ন নেয়।

SELECT id, studName  INTO #TempStudent FROM students where id =1

SELECT * FROM #TempStudent

যদিও আমি স্বীকার করেছি যে এটি একটি টেম্প টেবিল, তবুও আমি কখনও কাউকে বারচর (ম্যাক্স) ব্যবহারের পরামর্শ দেব না।
— বিপি_

8

সঠিক জিজ্ঞাসা:

drop table #tmp_table

select new_acc_no, count(new_acc_no) as count1
into #tmp_table
from table
where unit_id = '0007' 
group by unit_id, new_acc_no
having count(new_acc_no) > 1

10
এই প্রশ্নের প্রশ্নের সাথে কোনও সম্পর্ক নেই। আপনি এই তথ্য অন্য কোথাও থেকে নিয়েছেন। সরানো হচ্ছে new_acc_no, unit_id = '0007', group by, having count(new_acc_no) > 1, ইত্যাদি রূপান্তরিত একটি সঠিক ডুপ্লিকেট মধ্যে উত্তর: stackoverflow.com/a/15762663/1476885
— Zanon

7

আপনি টেম্প টেবিল তৈরি করার পরে আপনি কেবল একটি সাধারণ কাজ করবেন INSERT INTO () SELECT FROM

INSERT INTO #TempTable (id, Date, Name)
SELECT t.id, t.Date, t.Name
FROM yourTable t

5
insert into #temptable (col1, col2, col3)
select col1, col2, col3 from othertable

নোট করুন যে এটি দুর্বল অনুশীলন হিসাবে বিবেচিত:

insert into #temptable 
select col1, col2, col3 from othertable

যদি টেম্প টেবিলের সংজ্ঞাটি পরিবর্তন করতে হয়, কোড রানটাইম ব্যর্থ হতে পারে।



3

অস্থায়ী টেবিলের বেসিক অপারেশনটি নীচে দেওয়া হয়েছে, আপনার প্রয়োজনীয়তা অনুসারে সংশোধন এবং ব্যবহার করুন,

- একটি টেম্প টেবিল তৈরি করুন

CREATE TABLE #MyTempEmployeeTable(tempUserID  varchar(MAX), tempUserName  varchar(MAX) )

- একটি টেবিলে টেবিলের মধ্যে মূল্য নির্ধারণ করুন

INSERT INTO #MyTempEmployeeTable(tempUserID,tempUserName) SELECT userid,username FROM users where userid =21

- QUERY একটি টেম্প টেবিল [এটি কেবল একই অধিবেশন / ইনস্ট্যান্সে কাজ করবে, অন্য ব্যবহারকারীর সেশন দৃষ্টান্তে নয়]

SELECT * FROM #MyTempEmployeeTable

- টেম্প ট্যাবলে মূল্য নির্ধারণ করুন

DELETE FROM #MyTempEmployeeTable

- একটি টেম্প টেবিল ড্রপ

DROP TABLE #MyTempEmployeeTable

যদিও আমি স্বীকার করেছি যে এটি একটি টেম্প টেবিল, তবুও আমি কখনও কাউকে বারচর (ম্যাক্স) ব্যবহারের পরামর্শ দেব না।
— বিপি_

@bp_ এটি একটি সাধারণ নমুনার স্নিপেট যা ব্যবহারকারী এবং ব্যবহারকারী তাদের প্রয়োগের প্রয়োজনীয়তার উপর ভিত্তি করে ডেটা টাইপ এবং এর আকার নির্দিষ্ট করতে পারে explains
— ভুবনেশ মোহনকুমার

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