KoderSolutionKoderSolution LogoKoderSolution Logo
HomeArticlesTutorialsToolsRun CodeForumAI Lab
🗄️

MySQL

Topic Hub & Articles

MySQL Aggregate Functions

10 min

MySQL ALL Operator

10 min

MySQL Editors and Clients

10 min

MySQL MAX() Function

10 min

MySQL Built-in Functions Reference

10 min

MySQL Introduction

10 min

MySQL RDBMS Concepts

10 min

MySQL SQL Syntax

10 min

MySQL SELECT Statement

10 min

MySQL SELECT DISTINCT

10 min

MySQL WHERE Clause

10 min

MySQL Order By

10 min

MySQL AND Operator

10 min

MySQL OR Operator

10 min

MySQL NOT Operator

10 min

MySQL INSERT INTO

10 min

MySQL NULL Values

10 min

MySQL UPDATE Statement

10 min

MySQL DELETE Statement

10 min

MySQL LIMIT and OFFSET

10 min

MySQL MIN and MAX

10 min

MySQL COUNT() Function

10 min

MySQL SUM() Function

10 min

MySQL AVG() Function

10 min

MySQL LIKE Operator

10 min

MySQL Wildcards

10 min

MySQL IN Operator

10 min

MySQL BETWEEN Operator

10 min

MySQL Aliases (AS)

10 min

MySQL Comments

10 min

MySQL Operators

10 min

MySQL Joins Overview

10 min

MySQL INNER JOIN

10 min

MySQL LEFT JOIN

10 min

MySQL RIGHT JOIN

10 min

MySQL CROSS JOIN

10 min

MySQL Self Join

10 min

MySQL GROUP BY

10 min

MySQL HAVING Clause

10 min

MySQL EXISTS Operator

10 min

MySQL ANY and ALL Operators

10 min

MySQL UNION Operator

10 min

MySQL UNION ALL

10 min

MySQL INSERT INTO SELECT

10 min

MySQL CASE Expression

10 min

MySQL IFNULL() and COALESCE()

10 min

MySQL CREATE DATABASE

10 min

MySQL DROP DATABASE

10 min

MySQL CREATE TABLE

10 min

MySQL DROP & TRUNCATE TABLE

10 min

MySQL ALTER TABLE

10 min

MySQL Data Types

10 min

MySQL Dates and Times

10 min

MySQL Constraints

10 min

MySQL NOT NULL Constraint

10 min

MySQL UNIQUE Constraint

10 min

MySQL PRIMARY KEY

10 min

MySQL FOREIGN KEY

10 min

MySQL CHECK Constraint

10 min

MySQL DEFAULT Constraint

10 min

MySQL Indexes

10 min

MySQL AUTO_INCREMENT

10 min

MySQL Views

10 min

MySQL Stored Procedures

10 min

MySQL Prepared Statements

10 min

MySQL SQL Injection Prevention

10 min

Install MySQL on Windows

10 min

Install MySQL on Linux

10 min

MySQL ASCII() Function

10 min

MySQL CHAR_LENGTH() Function

10 min

MySQL CHARACTER_LENGTH() Function

10 min

MySQL CONCAT() Function

10 min

MySQL CONCAT_WS() Function

10 min

MySQL FIELD() Function

10 min

MySQL FIND_IN_SET() Function

10 min

MySQL FORMAT() Function

10 min

MySQL INSERT() Function

10 min

MySQL INSTR() Function

10 min

MySQL LCASE() Function

10 min

MySQL LEFT() Function

10 min

MySQL LENGTH() Function

10 min

MySQL LOCATE() Function

10 min

MySQL LOWER() Function

10 min

MySQL LPAD() Function

10 min

MySQL LTRIM() Function

10 min

MySQL MID() Function

10 min

MySQL POSITION() Function

10 min

MySQL REPEAT() Function

10 min

MySQL REPLACE() Function

10 min

MySQL REVERSE() Function

10 min

MySQL RIGHT() Function

10 min

MySQL RPAD() Function

10 min

MySQL RTRIM() Function

10 min

MySQL SPACE() Function

10 min

MySQL STRCMP() Function

10 min

MySQL SUBSTR() Function

10 min

MySQL SUBSTRING() Function

10 min

MySQL SUBSTRING_INDEX() Function

10 min

MySQL TRIM() Function

10 min

MySQL UCASE() Function

10 min

MySQL UPPER() Function

10 min

MySQL ABS() Function

10 min

MySQL ACOS() Function

10 min

MySQL ASIN() Function

10 min

MySQL ATAN() Function

10 min

MySQL ATAN2() Function

10 min

MySQL AVG() Function

10 min

MySQL CEIL() Function

10 min

MySQL CEILING() Function

10 min

MySQL COS() Function

10 min

MySQL COT() Function

10 min

MySQL COUNT() Function

10 min

MySQL DEGREES() Function

10 min

MySQL DIV Operator

10 min

MySQL EXP() Function

10 min

MySQL FLOOR() Function

10 min

MySQL GREATEST() Function

10 min

MySQL LEAST() Function

10 min

MySQL LN() Function

10 min

MySQL LOG() Function

10 min

MySQL LOG10() Function

10 min

MySQL LOG2() Function

10 min

MySQL MAX() Function

10 min

MySQL MIN() Function

10 min

MySQL MOD() Function

10 min

MySQL PI() Function

10 min

MySQL POW() Function

10 min

MySQL POWER() Function

10 min

MySQL RADIANS() Function

10 min

MySQL RAND() Function

10 min

MySQL ROUND() Function

10 min

MySQL SIGN() Function

10 min

MySQL SIN() Function

10 min

MySQL SQRT() Function

10 min

MySQL SUM() Function

10 min

MySQL TAN() Function

10 min

MySQL TRUNCATE() Function

10 min

MySQL ADDDATE() Function

10 min

MySQL ADDTIME() Function

10 min

MySQL CURDATE() Function

10 min

MySQL CURRENT_DATE() Function

10 min

MySQL CURRENT_TIME() Function

10 min

MySQL CURRENT_TIMESTAMP() Function

10 min

MySQL CURTIME() Function

10 min

MySQL DATE() Function

10 min

MySQL DATEDIFF() Function

10 min

MySQL DATE_ADD() Function

10 min

MySQL DATE_FORMAT() Function

10 min

MySQL DATE_SUB() Function

10 min

MySQL DAY() Function

10 min

MySQL DAYNAME() Function

10 min

MySQL DAYOFMONTH() Function

10 min

MySQL DAYOFWEEK() Function

10 min

MySQL DAYOFYEAR() Function

10 min

MySQL EXTRACT() Function

10 min

MySQL FROM_DAYS() Function

10 min

MySQL HOUR() Function

10 min

MySQL LAST_DAY() Function

10 min

MySQL LOCALTIME() Function

10 min

MySQL LOCALTIMESTAMP() Function

10 min

MySQL MAKEDATE() Function

10 min

MySQL MAKETIME() Function

10 min

MySQL MICROSECOND() Function

10 min

MySQL MINUTE() Function

10 min

MySQL MONTH() Function

10 min

MySQL MONTHNAME() Function

10 min

MySQL NOW() Function

10 min

MySQL PERIOD_ADD() Function

10 min

MySQL PERIOD_DIFF() Function

10 min

MySQL QUARTER() Function

10 min

MySQL SECOND() Function

10 min

MySQL SEC_TO_TIME() Function

10 min

MySQL STR_TO_DATE() Function

10 min

MySQL SUBDATE() Function

10 min

MySQL SUBTIME() Function

10 min

MySQL SYSDATE() Function

10 min

MySQL TIME() Function

10 min

MySQL TIME_FORMAT() Function

10 min

MySQL TIME_TO_SEC() Function

10 min

MySQL TIMEDIFF() Function

10 min

MySQL TIMESTAMP() Function

10 min

MySQL TO_DAYS() Function

10 min

MySQL WEEK() Function

10 min

MySQL WEEKDAY() Function

10 min

MySQL WEEKOFYEAR() Function

10 min

MySQL YEAR() Function

10 min

MySQL YEARWEEK() Function

10 min

MySQL BIN() Function

10 min

MySQL BINARY Operator

10 min

MySQL CASE Expression

10 min

MySQL CAST() Function

10 min

MySQL COALESCE() Function

10 min

MySQL CONNECTION_ID() Function

10 min

MySQL CONV() Function

10 min

MySQL CONVERT() Function

10 min

MySQL CURRENT_USER() Function

10 min

MySQL DATABASE() Function

10 min

MySQL IF() Function

10 min

MySQL IFNULL() Function

10 min

MySQL ISNULL() Function

10 min

MySQL LAST_INSERT_ID() Function

10 min

MySQL NULLIF() Function

10 min

MySQL SESSION_USER() Function

10 min

MySQL SYSTEM_USER() Function

10 min

MySQL USER() Function

10 min

MySQL VERSION() Function

10 min

Progress
0%

0 / 206 Lessons

KoderSolutionKoderSolution LogoKoderSolution Logo

The world’s most advanced technical ecosystem for modern software engineers. Learn, build, and grow with next-generation developer tools and resources.

Facebook PageX (Twitter) ProfileYouTube ChannelContact Support

Engineering Newsletter

Subscribe for weekly software engineering tutorials, architecture guides, and developer tool updates.

Platforms

  • Technical Articles
  • Interactive Tutorials
  • AI Coding Lab
  • Developer Forum
  • Developer Tools

Pages

  • About Us
  • Contact Us
  • Privacy Policy
  • Terms of Service
  • Refund Policy
  • Disclaimer
  • Advertisement

Popular Topics

  • PHP
  • Laravel
  • Python
  • React.Js
  • MySQL
© 2026 KoderSolutionAll Rights Reserved
Developed Bymaksudur.dev
MySQLMySQL Joins
Lesson

MySQL INSERT INTO SELECT

10 min reading
Free Course

MySQL INSERT INTO SELECT: Bulk Copying Rows Between Tables

The MySQL INSERT INTO ... SELECT statement copies rows from a source query and inserts them directly into an existing target table in one server-side operation. Unlike exporting rows to application memory and running a loop of inserts, everything stays inside MySQL with minimal network overhead.

Basic Syntax

Make sure the column list after INSERT INTO matches the column count and data types returned by SELECT:

INSERT INTO target_table (col1, col2, col3)
SELECT col1, col2, col3
FROM source_table
WHERE filter_condition;

The target table must already exist before running INSERT INTO ... SELECT. If you want to create a brand-new table on the fly from a query result, use CREATE TABLE new_table AS SELECT ... instead.

Practical SQL Example

Suppose you want to archive inactive accounts from demo_customers into demo_archived_customers before cleaning up the main table:

-- Create the archive table once
CREATE TABLE IF NOT EXISTS demo_archived_customers (
    customer_id INT PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    archived_at DATETIME NOT NULL
);

-- Copy inactive customers into the archive table
INSERT INTO demo_archived_customers (customer_id, first_name, last_name, email, archived_at)
SELECT id, first_name, last_name, email, NOW()
FROM demo_customers
WHERE is_active = 0;
customer_id first_name last_name email archived_at
12 Sam Rivera [email protected] 2026-09-15 10:00:00

Common Mistakes and Best Practices

  • Preview the SELECT Query First: Run the exact SELECT ... FROM ... WHERE ... query on its own to verify row counts and column order before adding INSERT INTO.
  • Handle Existing Keys Cleanly: If a batch job might re-run over overlapping rows, append ON DUPLICATE KEY UPDATE archived_at = VALUES(archived_at) or filter with NOT EXISTS so primary key collisions do not abort the batch.
  • Chunk Large Copies to Reduce Locking: Copying millions of rows in one transaction locks source rows under repeatable-read isolation. Copy in primary-key ranges (WHERE id BETWEEN 1 AND 10000) and commit each chunk.

Frequently Asked Questions

Can I copy rows from a table into the same table?

Yes, INSERT INTO demo_products (product_name, price) SELECT CONCAT(product_name, ' Copy'), price FROM demo_products WHERE id = 1; duplicates a row safely in one statement.

Does INSERT INTO ... SELECT copy indexes and foreign keys?

No, it only inserts row data into an already-defined target table; indexes come from the target table's CREATE TABLE schema.

Can I combine JOIN and GROUP BY inside the SELECT part?

Yes, any valid SELECT query—including joins, aggregates, and LIMIT—works as the source for INSERT INTO ... SELECT.

Save Your Progress

Unlock Your
Full Potential.

Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.

Quick Access With

Enterprise-Grade Security Protocol

Try it Yourself

Experiment with the code from this lesson in our interactive playground.

Open Playground

Related Developer Tools & Topic Hub

MySQL Topic Hub
SQL Formatter
Format and indent SQL queries cleanly
JSON to CSV
Convert query exports and datasets
All MySQL Articles
Deep-dive guides, tips & discussions
PreviousMySQL UNION ALL
Continue JourneyNext: MySQL CASE Expression

Stuck on this lesson?

Join our community of senior developers.

Ask in Forum