變數宣告例子可從這看到
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
留言列表