如果資料不存在才插入

  1. 1. 不使用以下插入方式
  2. 2. 使用以下方式插入
  3. 3. 因為要考慮只有在沒有資料的情況下才插入資料,所以要加入 where not exists 的變形用法
1
2
3
4
5
insert into proposal_label (name)
select * from (select label_name) AS tmp
where not exists (
select id from proposal_label where name = label_name
) limit 1;

以上為實際範例


不使用以下插入方式

1
2
insert into <table-name> (...columns)
value (...values)


使用以下方式插入

1
2
insert into <table-name> (...columns)
select columns from <table-name> where <addition>


因為要考慮只有在沒有資料的情況下才插入資料,所以要加入 where not exists 的變形用法

1
select * from (select label_name) AS tmp

會將要插入的資料變成一張暫時的 table

1
2
3
where not exists (
select id from proposal_label where name = label_name
) limit 1;

要確認要插入的該張 table 沒有這個 value 的資料存在

limit 1 是因為不必撈出過多的資料,這樣有助於執行速率。