mysql :: টেবিলে fromোকান, অন্য টেবিল থেকে ডেটা?


186

আমি ভাবছিলাম যে স্কুএলে খাঁটিভাবে এটি করার কোনও উপায় আছে:

q1 = SELECT campaign_id, from_number, received_msg, date_received 
     FROM `received_txts` WHERE `campaign_id` = '8';
INSERT INTO action_2_members (campaign_id, mobile, vote, vote_date)    
    VALUES(q1.campaign_id, q1.from_number, q1.received_msg, q1.date_received);

দ্রষ্টব্য: Q1 প্রায় 30k সারি ফিরে আসবে।

আমি উপরে সোজা স্কুএলে যা করার চেষ্টা করছি তার কি কোনও উপায় আছে? কেবল একটি টেবিল (মূলত একটি কাঁচা ডেটা টেবিল) থেকে সরাসরি তথ্য টানতে এবং অন্য টেবিলের মধ্যে sertোকাতে (মূলত একটি প্রক্রিয়াজাত ডেটা টেবিল)?

উত্তর:


400
INSERT INTO action_2_members (campaign_id, mobile, vote, vote_date)  
SELECT campaign_id, from_number, received_msg, date_received
  FROM `received_txts`
 WHERE `campaign_id` = '8'

1
@ ইনসেন: ১) একটি উত্তর দিন ২) প্রশ্নের বিন্যাসটি সংশোধন করুন। অর্ডারটি পরের বার মিস করবেন না ;-)
zerkms

হা হা :-) হ্যাঁ..আমি কখনই আমার অগ্রাধিকারগুলি সাজাতে সক্ষম হইনি! :-D
জগমাগ

1
কাজ! +1 নিখুঁত এবং খুব দ্রুত! ধন্যবাদ বন্ধু. কেবল নির্বাচন ক্ষেত্রগুলি থেকে বন্ধনীগুলি সরিয়ে ফেলতে হয়েছিল ...
কেউ

@zerkms; ট্রিগাররা এই INSERT INTO ... SELECTবিবৃতি দিয়ে কাজ করবে ?
হ্যাকগুলি

2
@ হ্যাকস আমিও ঠিক তেমন বিশ্বাস করি যেমন এটি একটি "সাধারণ"INSERT
জেরকামস

30

পুরো সারির জন্য

xyz এ প্রবেশ করান xyz2 থেকে * নির্বাচন করুন যেখানে id = "1";

নির্বাচিত কলামের জন্য

xyz tোকান (t_id, v_id, f_name) টি_আইডি, v_id, f_name xyz2 থেকে নির্বাচন করুন যেখানে id = "1";

1
যদি ইতিমধ্যে কোনও মিলের প্রাথমিক কী সহ কোনও বিদ্যমান রেকর্ড থাকে তবে পুরো সারি পদ্ধতির ব্যর্থতা।
হটএন

আপনি কি কোনও সমাধান খুঁজে পেয়েছেন? <ইতিমধ্যে কোনও মিলের প্রাথমিক কী সহ কোনও বিদ্যমান রেকর্ড থাকলে পুরো সারির পন্থা ব্যর্থ হয়>>
শিবধ্বজ পান্ডে

10

জার্কम्स দ্বারা উত্তর দেওয়া সঠিক পদ্ধতি। তবে, যদি কেউ টেবিলটিতে আরও অতিরিক্ত কলাম সন্নিবেশ করতে দেখছেন তবে আপনি এটি নিম্নলিখিতটি থেকে পেতে পারেন:

INSERT INTO action_2_members (`campaign_id`, `mobile`, `email`, `vote`, `vote_date`, `current_time`)
SELECT `campaign_id`, `from_number`, 'example@domain.xyz', `received_msg`, `date_received`, 1502309889 FROM `received_txts` WHERE `campaign_id` = '8'

উপরের ক্যোয়ারিতে ইমেল এবং কারেন্ট_টাইম নামে 2 টি অতিরিক্ত কলাম রয়েছে ।


2
যদি আমি 'অতিরিক্ত' কলাম যেমন ইমেল এবং কারেন্ট_টাইম যুক্ত করে বেছে বেছে আলাদা আলাদা মান থেকে তিনটি সারি ডেটা সন্নিবেশ করতে চাইতাম তবে কী হবে?
xxstevenxo

4
INSERT INTO Table1 SELECT * FROM Table2

এটি একটি খুব নিম্ন মানের উত্তর। প্লাস, গৃহীত উত্তরের মতো নয়, এমনকি এটি প্রশ্নের সাথে অন্তর্ভুক্ত তথ্যের সাথে সম্পর্কিত হওয়ার চেষ্টাও করে না।
মাইক

0
INSERT INTO preliminary_image (style_id,pre_image_status,file_extension,reviewer_id,
uploader_id,is_deleted,last_updated) 

SELECT '4827499',pre_image_status,file_extension,reviewer_id,
uploader_id,'0',last_updated FROM preliminary_image WHERE style_id=4827488

বিশ্লেষণ

আমরা উপরের ক্যোয়ারীটি ব্যবহার করতে পারি যদি আমরা মাইএসকিএলে একটি টেবিল থেকে অন্য টেবিলে ডেটা অনুলিপি করতে চান

  1. এখানে উত্স এবং গন্তব্য সারণি একই, আমরা বিভিন্ন সারণীও ব্যবহার করতে পারি।
  2. কয়েকটি কলাম আমরা স্টাইল_আইডের মতো অনুলিপি করছি না এবং এটি মুছে ফেলা হয়েছে তাই আমরা অন্য টেবিল থেকে তাদের হার্ড কোডিং নির্বাচন করেছি
  3. আমরা উত্স হিসাবে ব্যবহৃত টেবিলটিতে অটো ইনক্রিমেন্ট ক্ষেত্রও রয়েছে তাই আমরা সেই কলামটি রেখেছি এবং এটি কোয়েরি কার্যকর করার সাথে সাথে স্বয়ংক্রিয়ভাবে sertedোকানো হবে।

ফাঁসির ফলাফল

1 টি জিজ্ঞাসা কার্যকর করা হয়েছে, 1 সাফল্য, 0 টি ত্রুটি, 0 সতর্কতা

ক্যোয়ারী: প্রিলিমিনারি_আইমেজে styleোকান (স্টাইল_আইডি, প্রিমেজ_স্ট্যাটাস, ফাইল_ এক্সটেনশন, রিভিউর_আইডি, আপলোডার_আইডি, ইজ_ডিলিটেড, লাস্ট_ আপডেটেড) নির্বাচন করুন ...

5 সারি ক্ষতিগ্রস্থ হয়েছে

সম্পাদন সময়: 0.385 সেকেন্ড স্থানান্তর সময়: 0 সেকেন্ড মোট সময়: 0.386 সেকেন্ড

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