মাইএসকিউএলে একটি টেবিল থেকে অন্য নতুন টেবিলে কীভাবে কপি করবেন?


143

আমি মাইএসকিউএলে একটি টেবিল থেকে অন্য টেবিলের মধ্যে অনুলিপি করতে চাই।

সারণী 1 (বিদ্যমান সারণী):

aid    
st_id
from_uid
to_gid
to_uid
created
changed
subject
message
link

সারণী 2 (নতুন সারণী)

st_id
uid
changed
status
assign_status

আমি টেবিল 1 থেকে টেবিল 2 তে ডেটাগুলির কয়েকটি ক্ষেত্র অনুলিপি করতে চাই।

এটি কি মাইএসকিউএল কোয়েরি ব্যবহার করে করা যেতে পারে?


1
এটি কি এককালীন কাজ বা আপনি নিয়মিত এটি করার পরিকল্পনা করছেন?
— jdias

@@ জেডিয়াস: এখন অবধি এটি এক সময়ের কাজ ..
— ফেরো

@ জেডিয়াস স্পষ্ট করে বলতে গেলে, এটি যদি এককালীন কাজ না হয় তবে মাইএসকিউএল নূব এর পরিবর্তে কী করা উচিত?
— Seanny123

1
সম্ভবত নকল তথ্য এড়ানোর জন্য দর্শনগুলি views
— জেমস ব্র্যাডবেরি

উত্তর:


280

এটি আপনি যা চান তা করবে:

INSERT INTO table2 (st_id,uid,changed,status,assign_status)
SELECT st_id,from_uid,now(),'Pending','Assigned'
FROM table1

আপনি যদি টেবিল 1 থেকে সমস্ত সারি অন্তর্ভুক্ত করতে চান। অন্যথায় আপনি যদি কেবল টেবিল 1 এর একটি উপসেট যোগ করতে চান তবে আপনি শেষে একটি WHERE বিবৃতি যুক্ত করতে পারেন।

আশা করি এটা কাজে লাগবে.


দুর্দান্ত, এটি দেখে আমি আনন্দিত যে টি-এসকিউএল-তে আমার ব্যবহৃত হয়েছে একই রকম।
— jpieron

1
মাইএসকিউএল প্রেম করার আরও একটি কারণ, খুব স্বজ্ঞাত!
— peceps

আপনি যদি সমস্ত টেবিল 1 ডেটা অনুলিপি করতে চান তবে আপনার অবশ্যই অনুলিপি করার আগে নতুন টেবিল 2 তৈরি করতে হবে @ANDEEP
— শচীন পুনে থেকে

77

আপনি যদি ক্ষেত্রগুলি তালিকাবদ্ধ করতে না চান এবং টেবিলগুলির কাঠামো একই হয় তবে আপনি এটি করতে পারেন:

INSERT INTO `table2` SELECT * FROM `table1`;

অথবা আপনি যদি একই কাঠামো সহ একটি নতুন টেবিল তৈরি করতে চান:

CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;

সন্নিবেশ নির্বাচন করার জন্য রেফারেন্স ; তৈরি টেবিল নির্বাচন জন্য রেফারেন্স


2
কেন [AS]বর্গাকার বন্ধনী মধ্যে, কি দ্বারা সম্পন্ন করা হয় ASএখানে
— Kasun Siyambalapitiya

3
এটি নির্দেশ করে যে শব্দটি alচ্ছিক। এটি সেভাবেই লেখা হয়েছে কারণ আমি নথিগুলি অনুলিপি করে আটকিয়েছি; এটি কিছু যোগ করে না। আমি মনে করি ASঅন্যান্য এসকিউএল উপভাষায় বাধ্যতামূলক।
— ব্রায়ান

22

আপনি অন্য টেবিল থেকে সহজেই ডেটা পেতে পারেন। আপনাকে কেবল ক্ষেত্রগুলি যুক্ত করতে হবে।

মাইএসকিএল ক্যোয়ারীটি হ'ল:

INSERT INTO table_name1(fields you want)
  SELECT fields you want FROM table_name2


যেখানে মানগুলি টেবিল 2 থেকে টেবিল 1 এ অনুলিপি করা হয়



4

সর্বোত্তম বিকল্পটি INSERT ব্যবহার করুন ... মাইএসকিএলে বিবৃতি নির্বাচন করুন।

http://dev.mysql.com/doc/refman/5.0/en/insert-select.html


1
স্বজ্ঞাত :) এটি আমার ভাল লেগেছে। এটি "সেন্সর ইন্টো" এর এক লাইনের পূর্ববর্তী একটি সাধারণ নির্বাচনী বিবৃতি।
— হাইথাম সুইলেম


2
INSERT INTO Table1(Column1,Column2..) SELECT Column1,Column2.. FROM Table2 [WHERE <condition>]

2
যদিও এই কোডটি প্রশ্নের উত্তর দিতে পারে, এটি কীভাবে সমস্যাটি সমাধান করে এবং কেন এটি ব্যবহার করবেন তা বোঝানো ভাল। কোড-কেবল উত্তরগুলি দীর্ঘমেয়াদে কার্যকর নয়।
— টোবিয়াস লিফকে

0

আপনি এই কোড চেষ্টা করতে পারেন

insert into #temp 
select Product_ID,Max(Grand_Total) AS 'Sales_Amt', Max(Rec_Amount) ,'',''
from Table_Name group by Id

0

উপরের প্রশ্নটি কেবল তখনই কার্যকর হয় যদি আমরা গ্রাহকের সাথে মেলে কলামগুলির সাথে ক্লায়েন্ট টেবিল তৈরি করেছি

INSERT INTO clients(c_id,name,address)SELECT c_id,name,address FROM customer

0

আপনার প্রথমে টেবিল 2 তৈরি করা উচিত।

টেবিল 2 fieldোকান (ফিল্ড 1, ফিল্ড 2, ...)
ফিল্ড 1, ফিল্ড 2, .... নির্বাচন করুন
টেবিল 1 থেকে
যেখানে অবস্থা;

0

যদি টেবিলটি বিদ্যমান থাকে। আপনি টেবিলের নাম সন্নিবেশ করানোর চেষ্টা করতে পারেন * পুরানো_ টেল থেকে নির্বাচন করুন;

যদি টেবিলটি বিদ্যমান না থাকে। আপনার পুরানো_ টেবিলের মতো টেবিলের টেবিলের নাম তৈরি করার চেষ্টা করা উচিত; টেবিলের নাম intoোকান # পুরানো_তলা থেকে নির্বাচন করুন;

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