ฉันจะคัดลอกข้อมูลจากคอลัมน์หนึ่งไปยังอีกคอลัมน์ในตารางเดียวกันได้อย่างไร


253

เป็นไปได้ไหมที่จะคัดลอกข้อมูลจากคอลัมน์ A ไปยังคอลัมน์ B สำหรับระเบียนทั้งหมดในตารางใน SQL?



@DanielDiPaolo คำถามนั้นมีไว้สำหรับการคัดลอกคอลัมน์ไปยังตารางที่แตกต่างกัน
Nick T

คำตอบ:


466

เกี่ยวกับเรื่องนี้

UPDATE table SET columnB = columnA;

สิ่งนี้จะอัปเดตทุกแถว


1
นอกจากนี้ยังจะทำงานถ้าคุณต้องการถ่ายโอนค่าเดิมกับคอลัมน์อื่น ๆ UPDATE table SET columnA = 'new value', columnB = columnAและอัปเดตครั้งแรกหนึ่ง: เช่นเดียวกับคำตอบอื่น ๆ ที่บอกว่า - อย่าลืมประโยค WHERE เพื่ออัพเดตเฉพาะสิ่งที่จำเป็น
Carl di Ortus

5
ฉันคิดใน proc ที่ซับซ้อนทำวนรอบในแต่ละบันทึกเมื่อคำตอบนั้นง่ายมาก
deFreitas

6
@deFreitas นักปราชญ์คนหนึ่งบอกฉันว่า: ถ้าคุณคิดจะเขียนวนรอบเพื่อให้ได้อะไรใน SQL คุณก็ทำผิด
Daniel Patrick

95
UPDATE table_name SET
    destination_column_name=orig_column_name
WHERE condition_if_necessary

10
@ มาร์คจริง ๆ แล้วมันสมเหตุสมผลแล้วทำไม downvote นี้ถึงเป็นยัง? ฉันมีสถานการณ์ที่ฉันต้องการคัดลอกค่าวันที่จากคอลัมน์หนึ่งไปยังคอลัมน์อื่นและใช้กับคอลัมน์บางแห่งเท่านั้นและไม่ใช่ทั้งหมด ดังนั้นการมีตำแหน่งในคำสั่งจะเป็นสิ่งจำเป็น
finnTheHumin

5
@finnTheHuman คำถามถามถึงวิธีการ "คัดลอกข้อมูลจากบันทึกทั้งหมด" ซึ่งคำตอบก่อนหน้านี้ตอบถูกต้องดังนั้นจึงไม่เพิ่มอะไรเลย
mmmmmm

7
@ ทำเครื่องหมายว่า "สิ่งนี้แตกต่างจากคำตอบเก่าที่ยอมรับได้อย่างไร" ซึ่งมีส่วนคำสั่ง WHERE "ดังนั้นนี่จะไม่เพิ่มอะไร" ฉันไม่เห็นด้วยก็เพิ่มบางสิ่ง มันเป็นจุดที่ดีในการรวม WHERE clause IF NECESSARY เราควรมีความรับผิดชอบในการแก้ปัญหาการ downvoting ความเกลียดชังของคนเกลียดชัง
finnTheHumin

ในกรณีของฉันฉันเพิ่มคอลัมน์ last_seen UPDATE user SET last_seen = first_seen WHERE last_seen IS NULL
luckydonald

ฉันไม่เห็นด้วยกับคุณ แต่ไม่เต็มใจบอกใคร! ข้อที่คุณทำงานเหมือนการรักษา
แอนดรูว์วันที่

0

การดำเนินการนี้จะอัปเดตแถวทั้งหมดในคอลัมน์นั้นหากไม่ได้เปิดใช้งานเซฟโหมด

UPDATE table SET columnB = columnA;

หากเปิดใช้งานเซฟโหมดคุณจะต้องใช้คำสั่งย่อย ฉันใช้คีย์หลักมากกว่า 0 โดยพื้นฐานทั้งหมดจะได้รับการอัปเดต

UPDATE table SET columnB = columnA where table.column>0;

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.