問題描述:想要插入的資料是根據表中資料計算得來,想要直接一條語句插入完成。
解決思路:利用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...