mysql批次更新產生的原因自然是因為一條條資料去更新會降低效率,導致效能變差,其二就是一條條資料更新會導致寫sql語句麻煩,下面我將介紹2種批次更新的update語句
1:建立臨時表,先更新臨時表,然後從臨時表中update即可
一:建立臨時表,並將資料中轉到臨時表:
create table table_tmp (id int(8), cloumn varchar(20));
insert into table_tmp values (1,"a"), (2, "b"), (3, "c");
二:從臨時表用update語句對其目標表進行批次更新
update table_target set table_target.cloumn = table_tmp.cloumn where table_target.id= table_tmp.id
2:使用when...then語句進行批次更新
UPDATE table_own SET
cloumn_own= CASE id
WHEN 1 THEN "a"
WHEN 2 THEN "b"
WHEN 3 THEN "c"
END
WHERE id IN (1,2,3);
這個批次更新語句的意思就是說,更新cloumn_own欄位,如果id=1 則cloumn_own=a,如果id=2 則cloumn_own=b,如果id=3 則cloumn_own=c
記住,其實end 後面的where語句是不可必需的,但最好是帶上
如果不加where條件,會使整個表的資料更新,不滿足條件的對應的值會設定成預設值(導致你執行的前面n-1次都是無效,保留的是第n次)
帶上where條件的話,就不會出現這種情況了
mysql批次更新產生的原因自然是因為一條條資料去更新會降低效率,導致效能變差,其二就是一條條資料更新會導致寫sql語句麻煩,下面我將介紹2種批次更新的update語句
1:建立臨時表,先更新臨時表,然後從臨時表中update即可
一:建立臨時表,並將資料中轉到臨時表:
create table table_tmp (id int(8), cloumn varchar(20));
insert into table_tmp values (1,"a"), (2, "b"), (3, "c");
二:從臨時表用update語句對其目標表進行批次更新
update table_target set table_target.cloumn = table_tmp.cloumn where table_target.id= table_tmp.id
2:使用when...then語句進行批次更新
UPDATE table_own SET
cloumn_own= CASE id
WHEN 1 THEN "a"
WHEN 2 THEN "b"
WHEN 3 THEN "c"
END
WHERE id IN (1,2,3);
這個批次更新語句的意思就是說,更新cloumn_own欄位,如果id=1 則cloumn_own=a,如果id=2 則cloumn_own=b,如果id=3 則cloumn_own=c
記住,其實end 後面的where語句是不可必需的,但最好是帶上
如果不加where條件,會使整個表的資料更新,不滿足條件的對應的值會設定成預設值(導致你執行的前面n-1次都是無效,保留的是第n次)
帶上where條件的話,就不會出現這種情況了