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


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.