首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL INSERT ... SELECT 插入不存在於來源表的常數列

     編輯:MySQL 資料庫相關知識

場景

需將 table_b 的 id 複製到 table_a,並同時寫入固定字串 'name' 作為 name 欄位值,但 'name' 不存在於 table_b 中。

驗證過程

mysql> SELECT 'name', id FROM table_b;
+------+-----------+
| name | id        |
+------+-----------+
| name | 123456    |
| name | 1234567   |
| name | 12345678  |
| name | 123456789 |
+------+-----------+
4 rows in set (0.00 sec)

直接插入

mysql> INSERT INTO table_a(name, b_refer) SELECT 'name', id FROM table_b;
Query OK, 4 rows affected (0.03 sec)

原理解析

  • SELECT 列表中可混合「欄位」與「常數運算式」。
  • 常數會在每行結果中重複,等同於 CROSS JOIN 一個單行單列的虛擬表。
  • 適用於:寫入建立者、來源系統代碼、固定狀態值等衍生欄位。

擴展範例

-- 多個常數
INSERT INTO log (level, msg, src_ip, created_at)
SELECT 'ERROR', 'timeout', '10.0.0.1', NOW() FROM dual;

-- 運算式
INSERT INTO sales_summary (dt, total_amt)
SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY), SUM(amt) FROM orders;

dual 是 MySQL 虛擬單行表,僅用於不需從實體表取資料時。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved