數據庫更新就一種方法update,?
其標準格式:update 表名 set 字段=值 where 條件?
不過根據數據的來源不同,還是有所區別的:
1、從外部輸入?
這種比較簡單?
例:
update?tb?set?UserName="XXXXX"?where?UserID="aasdd"
2、一些內部變量,函數等,比如時間等?
直接將函數賦值給字段
update?tb?set?LastDate=date()?where?UserID="aasdd"
3、對某些字段變量+1,常見的如:點擊率、下載次數等?
這種直接將字段+1然后賦值給自身
update?tb?set?clickcount=clickcount+1?where?ID=xxx
4、將同一記錄的一個字段賦值給另一個字段
update?tb?set?Lastdate=?regdate?where?XXX
5、將一個表中的一批記錄更新到另外一個表中?
table1?
ID f1 f2?
table2?
ID f1 f2?
先要將table2中的f1 f2 更新到table1(相同的ID)
update?table1,table2?set?table1.f1=table2.f1,table1.f2=table2.f2?where ?table1.ID=table2.ID
6、將同一個表中的一些記錄更新到另外一些記錄中?
表:a
ID | month | E_ID | Price |
---|---|---|---|
1 | 1 | 1 | 2 |
2 | 1 | 2 | 4 |
3 | 2 | 1 | 5 |
4 | 2 | 2 | 5 |
先要將表中2月份的產品price更新到1月份中?
顯然,要找到2月份中和1月份中ID相同的E_ID并更新price到1月份中?
這個完全可以和上面的方法來處理,不過由于同一表,為了區分兩個月份的,應該將表重命名一下?
update a,a as b set a.price=b.price where a.E_ID=b.E_ID and a.month=1 and b.month=2
當然,這里也可以先將2月份的查詢出來,在用5的方法去更新
update?a,(select?*?from?a?where?month=2)as?b?set?a.price=b.price?where?a.E_ID=b.E_ID?and?a.month=1
推薦:《SQL視頻教程》
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END