← Back to MySQL Course | Chapter 5: Inserting & Selecting Data | Lesson 6 of 6

INSERT INTO SELECT

INSERT INTO SELECT एक chart से कुछ rows को दूसरे chart पर एक बार में copy करने जैसा है, उन्हें दोबारा type करने के बजाय।
Syntax
sql
INSERT INTO target_table (column1, column2)
SELECT column1, column2 FROM source_table
[WHERE condition];

Tables के बीच Data Copy करना

INSERT INTO ... SELECT एक single statement में rows को directly एक table से दूसरे में copy करता है, जो rows को एक application में पढ़कर उन्हें एक-एक करके वापस insert करने से कहीं ज़्यादा efficient है।

उदाहरण: Copying Data Between Tables

sql
INSERT INTO archived_users SELECT * FROM users;

Specific Columns Copy करना

आपको हर column copy करने की ज़रूरत नहीं — सिर्फ ज़रूरी specific columns select करना अभी भी काम करता है, जब तक उनके data types destination table के matching columns से सही से line up करें।

उदाहरण: Copying Specific Columns

sql
INSERT INTO archived_users (name, email) SELECT name, email FROM users;

Conditions के साथ Copy करना

SELECT हिस्से में एक WHERE clause add करना आपको पूरी source table को destination में duplicate करने के बजाय सिर्फ rows का एक filtered subset copy करने देता है।

उदाहरण: Copying with Conditions

sql
INSERT INTO archived_users SELECT * FROM users WHERE is_active = 0;

Constant Values के साथ Copy करना

आप same SELECT list में source table की real column values को hardcoded constant values के साथ mix कर सकते हैं, जो नए copied rows को migrated status flag जैसी किसी चीज़ से tag करने का एक common तरीका है।

उदाहरण: Copying with Constant Values

sql
INSERT INTO archived_users (name, archived_by) SELECT name, 'admin' FROM users;

Duplicate Entries रोकना

same INSERT INTO ... SELECT को दो बार चलाना data को दूसरी बार duplicate कर देगा जब तक आप एक WHERE clause या constraint add न करें जो specifically पहले से मौजूद rows को दोबारा copy होने से रोके।

उदाहरण: Preventing Duplicate Entries

sql
INSERT INTO archived_users
SELECT * FROM users
WHERE id NOT IN (SELECT id FROM archived_users);
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. target table की उम्मीद से ज़्यादा या कम columns select करना, ताकि counts match न हों और insert fail हो जाए।
  2. इसे दो बार चलाना और same rows दोबारा insert करना, जब target में कोई unique key न हो।
  3. target table का column order source से अलग होने पर column order गलत करना।
चैप्टर सारांश
  • INSERT INTO किसी table में एक row या कई rows add करता है।
  • SELECT data retrieve करता है, DISTINCT duplicates हटाता है, और aliases results में columns या tables का नाम बदलते हैं।
  • INSERT INTO SELECT एक query result से rows को एक table में copy करता है।
🔒

Chapter Quiz — Complete all 6 topics to unlock

0/6 topics done

Complete these topics first:

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.