今天遇到一個(gè)問(wèn)題,就是在原來(lái)的一個(gè)表的基礎(chǔ)上增加兩個(gè)字段,并且根據(jù)歷史數(shù)據(jù)和一個(gè)計(jì)算方法把這兩個(gè)字段補(bǔ)齊。
到網(wǎng)上查了一下。
一、當(dāng)用一個(gè)表中的數(shù)據(jù)來(lái)更新另一個(gè)表中的數(shù)據(jù),T-SQL提供多種寫(xiě)法(下面列出了二種),但建議用第一種寫(xiě)法,雖然傳統(tǒng),但結(jié)構(gòu)清晰。
并且要注意,當(dāng)用一個(gè)表中的數(shù)據(jù)來(lái)更新另一個(gè)表中的數(shù)據(jù)時(shí),二個(gè)表一定要有關(guān)聯(lián)!
1.
update t1
set t1.c2 = t2.c2
from t2
where t1.c1 = t2.c1
2.
Update t1
set t1.c2 = t2.c2
from t1 inner join t2
on t1.c1 = t2.c1
二、FROM 子句中指定的表的別名不能作為 SET column_name 子句中被修改字段的限定符使用。
例如,下面的內(nèi)容無(wú)效:
UPDATE titles
SET t.ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
若要使上例合法,請(qǐng)從列名中刪除別名 t 或使用本身的表名。
1.
UPDATE titles
SET ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
2.
UPDATE titles
SET titles.ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
posted on 2011-03-31 18:28
漂漂 閱讀(3001)
評(píng)論(0) 編輯 收藏 引用