變數宣告例子可從這看到

https://msdn.microsoft.com/zh-tw/library/ms188927.aspx

USE AdventureWorks2012;  
GO  
SET NOCOUNT ON;  
GO  
DECLARE @Group nvarchar(50), @Sales money;  
SET @Group = N'North America';  
SET @Sales = 2000000;  
SET NOCOUNT OFF;  
SELECT FirstName, LastName, SalesYTD  
FROM Sales.vSalesPerson  
WHERE TerritoryGroup = @Group and SalesYTD >= @Sales;  

 

假設有個int欄位,名稱是Id,取得最大值可以直接這樣試

SELECT  Max(Id)  FROM [DataTableName]

執行就會跑出那個欄位的最大值

 

 

但是想取得那個最大值並且運用在sql中的時候,

這邊假設是要自動插入比現有最大Id再遞增1的資料,

如果這樣寫

USE [DatabaseName] 
GO

DECLARE @MAXID int;  
SET @MAXID = SELECT  Max(Id)  FROM [DataTableName];  
INSERT INTO [dbo].[DataTableName]
           ([Id]   ,[TermName]  ,[Money])
     VALUES(@MAXID+1,

           'data1', 
           'data2') 
           
GO

 

 

會發現第二行SELECT那邊出現紅線錯誤,

這邊要解決很簡單,其實就只是少了個小括號加上就正確了

SET @MAXID = SELECT  Max(Id)  FROM [DataTableName];  加上小括號改成

SET @MAXID = (SELECT  Max(Id)  FROM [DataTableName])  ;  

 

 

這樣子填好data1,data2然後執行插入,他的Id就會自動比現在最大的Id再大1

 

 

把賦值給變數的方法改為直接賦值到語法中的話會像這樣(兩者效果完全相同)

USE [DatabaseName] 
GO

INSERT INTO [dbo].[DataTableName]
           ([Id]   ,[Data1]  ,[Data2])
     VALUES((SELECT  Max(Id)  FROM [DataTableName])+1,

           'data1', 
           'data2') 
           
GO

 

 

 

 

arrow
arrow
    全站熱搜

    olivermode 發表在 痞客邦 留言(0) 人氣()