mysql insert與select的結合

2021-10-24 04:39:25 字數 1111 閱讀 1218

問題描述:想要插入的資料是根據表中資料計算得來,想要直接一條語句插入完成。

解決思路:利用insert和select結合

解決方案:

insert into branch_relation(descendant_id,ancestor_id,distance,gmt_create,gmt_modified)

select #, ancestor_id, distance + 1, current_timestamp(), current_timestamp() from branch_relation

where descendant_id = #

注意點:select與values連用時只能橫向不能縱向,即values裡使用select時,查詢出來的結果只當作乙個欄位的值,而不是多列待插入的值

錯誤寫法:

insert into branch_relation(descendant_id,ancestor_id,distance,gmt_create,gmt_modified)

values ( (select ancestor_id, distance + 1, current_timestamp(), current_timestamp() from branch_relation

where descendant_id = 100),

(1, 1, 0, current_timestamp(), current_timestamp())

)

正確寫法:

insert into branch_relation(descendant_id,ancestor_id,distance,gmt_create,gmt_modified)

values ( (select ancestor_id from branch_relation where descendant_id = 100) , 1, 0, current_timestamp(), current_timestamp() )

mysql insert 主鍵重複

mysql中insert into和replace into以及insert ignore用法區別 mysql中常用的三種插入資料的語句 insert into表示插入資料,資料庫會檢查主鍵,如果出現重複會報錯 replace into表示插入替換資料,需求表中有primarykey,或者uniqu...

Mysql insert語句的優化

1 如果你同時從同一客戶插入很多行,使用多個值表的insert語句。這比使用分開insert語句快 在一些情況中幾倍 insert into test values 1,2 1,3 1,4 2 如果你從不同客戶插入很多行,能通過使用insert delayed語句得到更高的速度。delayed的含義...

mysql insert的幾種方式

筆者建立的student 表,總共三個字段 studentid是主鍵 一 往student info 表中插入一條資料 insert into student infovalues 5,liutao 12 主鍵手動定義 報錯 error code 1062 duplicate entry 5 for...