একই টেবিলের এক কলাম থেকে অন্য কলামে মানগুলি অনুলিপি করুন


168

আমি কীভাবে একটি কলাম থেকে অন্য কলামে অনুলিপি করতে পারি? আমার আছে:

Database name: list
number | test
123456 | somedata
123486 | somedata1
232344 | 34

আমি পেতে চাই:

Database name: list
number | test
123456 | 123456
123486 | 123486
232344 | 232344

আমার কি মাইএসকিএল কোয়েরি করা উচিত?

উত্তর:


362

প্রশ্নের মধ্যে কোডের সংক্ষিপ্ত উত্তর হ'ল:

UPDATE `table` SET test=number

এখানে tableটেবিলের নাম এবং এটি ঘিরে রয়েছে গুরুতর উচ্চারণ (ওরফে ব্যাক-টিকস `) এটি কীওয়ার্ডগুলি এড়াতে মাইএসকিউএল কনভেনশন (এবং TABLEসেই ক্ষেত্রে একটি কীওয়ার্ড)।

সাবধান, এটি বেশ বিপজ্জনক ক্যোয়ারী যা testআপনার টেবিলের প্রতিটি সারিতে কলামে সমস্ত কিছু মুছে ফেলবে number(এটির মান নির্বিশেষে)

WHEREআপনার ক্যোয়ারিকে কেবলমাত্র সারিগুলির নির্দিষ্ট সেটগুলিতে সীমাবদ্ধ করতে ক্লজটি ব্যবহার করা বেশি সাধারণ :

UPDATE `products` SET `in_stock` = true WHERE `supplier_id` = 10

22
এটি এমন একটি বিরল ঘটনা যেখানে ডেভেলপাররা সাধারণ মানুষের মতো ভেবেছিল।
জ্যাক্সটার 11

9
সাবধানতা অবলম্বন করুন যদি আপনি update command... সাথে পরিচিত না হন তবে যেখানে কোনও ক্লজ না থাকলে এই কমান্ডটি update সমস্ত টেবিলে রেকর্ড করবে ।
gmo

খুবই সোজা! ধন্যবাদ! কি দারুন!
জিম্বোস্লাইস

1
@ জিএমও সতর্কতা অনুসারে প্রচুর ডেটা মুছার গুরুতর সম্ভাবনা। প্রথমে ডাটাবেসের ব্যাকআপ তৈরির কথা বিবেচনা করুন, তারপরে কোয়েরিকে একটি লাইনে সীমাবদ্ধ করার জন্য WHERE ক্লজ দিয়ে চালান। আপনি যদি ফলাফলটি নিয়ে খুশি হন তবে WHERE ধারাটি সরিয়ে দিন।
ব্লোগো

অসাধারণ. সে সম্পর্কে ভেবে দেখিনি। ধন্যবাদ।
ওঙ্কর মুসালে

28
UPDATE `table_name` SET `test` = `number`

আপনি প্রক্রিয়াটিতে যে কোনও গাণিতিক পরিবর্তন করতে পারেন বা মানগুলি সংশোধন করতে মাইএসকিউএল ফাংশন ব্যবহার করতে পারেন।



8

সতর্কতা : আপডেট কলামগুলির ক্রম সমালোচনা

ভাল : আমি কী চাই প্রিভস্ট্যাটাসের স্থিতির বিদ্যমান মান সংরক্ষণ করি

UPDATE Collections SET  PrevStatus=Status, Status=44 WHERE ID=1487496;

BAD : স্থিতি এবং প্রিভ স্ট্যাটাস উভয়ই 44 হিসাবে শেষ

UPDATE Collections SET  Status=44, PrevStatus=Status WHERE ID=1487496;

আপনি স্থিতি = 44 নির্ধারণ করছেন কেন?
স্কিলেটিয়া

সমস্যাটি দেখানোর জন্য @ সিলিটিয়া কেবল একটি নির্বিচার মান
জাজ্পার

6

নিম্নলিখিত চেষ্টা করুন:

UPDATE `list` SET `test` = `number` 

এটি "সংখ্যা" থেকে সমস্ত মানের অনুলিপি তৈরি করে এবং এটি "পরীক্ষায়" পেস্ট করে


3

নিম্নলিখিত আমার জন্য কাজ ..

  1. আপনার ক্যোয়ারী সম্পাদক অ্যাপ্লিকেশনটিতে আপনি নিরাপদ-মোড ব্যবহার করছেন না তা নিশ্চিত করুন। আপনি যদি হন, এটি অক্ষম করুন!
  2. তারপরে এসকিএল কমান্ড অনুসরণ করে চালান

একটি টেবিলে বলে, 'test_update_cmd', উত্স মান কলাম কল 2, লক্ষ্য মান কলাম 1 এবং শর্ত কলাম কল 3: -

UPDATE  test_update_cmd SET col1=col2 WHERE col3='value';

শুভকামনা!


-7

আপনি প্রক্রিয়াটি দিয়েও এটি করতে পারেন তাই আমার এটির জন্য একটি পদ্ধতি আছে

 DELIMITER $$
 CREATE PROCEDURE copyTo()
       BEGIN
               DECLARE x  INT;
            DECLARE str varchar(45);
              SET x = 1;
            set str = '';
              WHILE x < 5 DO
                set  str = (select source_col from emp where id=x);
            update emp set target_col =str where id=x;      
            SET  x = x + 1;
                END WHILE;

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