表連接查詢得到結果集后添加數據
1 INSERT INTO #saleSplitProduct(saleorderID,ProductCode,ProductNum,ProductPrice, 2 productMaterialKind,periodTypeID,baseProduceProductTypeID ) 3 SELECT t.saleOrderID,sop.productCode,sop.productNum,sop.productPrice,'',periodTypeID 4 , isnull(t.baseProduceProductTypeID,6) 5 FROM #tempSale t 6 INNER JOIN saleOrderDzProduct sop ON sop.saleOrderID = t.saleOrderID
表查詢多個結果,這種方式同樣適用於update於Delete
select * from Table1 where id in(1,2,3)
關於update_set_from_where
下面這樣的一個例子:
1 UPDATE psto SET productMaterialKind=sop.productMaterialKind 2 FROM #tempSale t 3 JOIN dbo.produceSaleTaskOrderDetail AS pstod ON t.saleOrderID=pstod.saleOrderID 4 JOIN dbo.produceSaleTaskOrder AS psto ON pstod.taskorderID = psto.taskOrderID 5 JOIN dbo.saleOrder AS so ON t.saleOrderID=so.saleOrderID 6 JOIN dbo.saleOrderDzProduct AS sop ON pstod.saleOrderID=sop.saleOrderID
update set from 語句格式
當where和set都需要關聯一個表進行查詢時,整個 update執行時,就需要對被關聯的表進行兩次掃描,顯然效率比較低。
對於這種情況,Sybase和SQL SERVER的解決辦法是使用UPDATE...SET...FROM...WHERE...的語法,實際上就是從源表獲取更新數據。
在 SQL 中,表連接(left join、right join、inner join 等)常常用於 select 語句,其實在 SQL 語法中,這些連接也是可以用於update 和 delete 語句的,在這些語句中使用 join 還常常得到事半功倍的效果。
Update T_OrderForm SET T_OrderForm.SellerID =B.L_TUserID
FROM T_OrderForm A LEFT JOIN T_ProductInfo B ON B.L_ID=A.ProductID
用來同步兩個表的數據!
