昨天的SQL編程中,有使用到一個方法,就是把一個表某一字段更新至另一個表的字段中去。實現這個方法,Insus.NET有嘗試了幾個方法,下面一一分享出來,讓大家參考參考。下面的數據只是模擬了,形式與Insus.NET實際數據相似。使用臨時表,你真實表一樣。表一:
代碼:

CREATE TABLE #Table1 ([Col1] INT NOT NULL PRIMARY KEY,[Col2] VARCHAR(10) NOT NULL,[Col3] VARCHAR(10) NULL)INSERT INTO #Table1 ([Col1],[Col2],[Col3]) VALUES (1,'GF',NULL),(2,'ER',NULL),(3,'SA',NULL),(4,'JK',NULL),(5,'RE',NULL)GOView Code
表二:
代碼:

CREATE TABLE #Table2 ([Col1] INT NOT NULL,[Col2] VARCHAR(100) NOT NULL)INSERT INTO #Table2 ([Col1],[Col2]) VALUES(3,'TR'),(2,'QT'),(1,'JN'),(5,'LP'),(4,'TR')GOView Code
查詢2張表的結果:
數據準備好了,看看要求,是需要把表2的Col2列值填充至表一的Col3上,2張表的對應主鍵均是Col1。
方法一:
代碼:

DECLARE @r INT =1, @rs INT = 0SELECT @rs = MAX([Col1]) FROM #Table2WHILE @r <= @rsBEGIN IF EXISTS(SELECT TOP 1 1 FROM #Table2 WHERE [Col1] = @r) BEGIN DECLARE @v VARCHAR(10) SELECT @v = [Col2] FROM #Table2 WHERE [Col1] = @r UPDATE #Table1 SET [Col3] = @v WHERE [Col1] = @r END SET @r = @r + 1ENDView Code
看看執行結果:
方法二 ,也許不是真正更新,而是獲取結果:
代碼:

CREATE TABLE #t ([Col1] INT NOT NULL PRIMARY KEY,[Col2] VARCHAR(10) NOT NULL,[Col3] VARCHAR(10) NULL)INSERT INTO #t ([Col1],[Col2],[Col3]) SELECT t1.[Col1],t1.[Col2],t2.[Col2] FROM #Table1 AS t1INNER JOIN #Table2 AS t2 ON (t1.[Col1] = t2.[Col1])View Code
得到的結果:
方法三,就是使用UPDATE ... INNER JOIN ...語法來處理,簡單:
代碼:

UPDATE t1SET t1.[Col3] = t2.[Col2]FROM #Table1 AS t1INNER JOIN #Table2 AS t2 ON (t1.[Col1] = t2.[Col1])View Code
執行結跟方法一的結果相同:
新聞熱點
疑難解答