SQL Server 按某一字段分组 取 最大 (小)值所在行的数据 -- 按某一字段分组 取 最大 (小)值所在行的数据 -- (爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 2007-10-23于浙江杭州) /* 数据如下: name val memo a 2 a2(a的第二个值) a 1 a1--a的第一个值 a 3 a3:a的第三个值 b 1 b1--b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b
1.对布尔值取反,使用 ~. 如 update set status=~status where id=2; status的值为true || false. 2.对0.1 数值取反,使用abs() 取绝对值. 如 update set status=abs(status-1) where id=1; status的值为0 || 1. 这里如果数据表里的值一开始为0,那么会报一个错: [Err] 1690 - BIGINT UNSIGNED value is out of range in '(r
SQL Server为字段添加默认值 if not exists ( select * from sys.columns as c join sys.objects as o on c.default_object_id = o.[object_id] where c.[object_id] = object_id('DriverTable') and c.name = 'DriverVan' ) begin alter table DriverTable add default(0) for
sql查询某字段的相同值: SELECT * FROM table WHERE col in (SELECT col FROM table GROUP BY col HAVING COUNT (col) >1); 顺带说一下where和having: select * from tablewhere ···(只能对分组前的属性进行筛选)group by ···(按某个字段分组)having ···(只能对分组后的每个组的整体属性进行筛选,用聚合函数体现)--不使用group by就默认表的整
存在值信息 表值函数实现: --实现split功能 的函数 拆分 逗号分开的多个值 ),)) )) as begin declare @i int set @SourceSql=rtrim(ltrim(@SourceSql)) set @i=charindex(@StrSeprate,@SourceSql) begin )) ,len(@SourceSql)-@i) set @i=charindex(@StrSeprate,@SourceSql) end if @SourceSql<>'\'
字段值 函数实现: )) ) as begin set @strs=','+@strs+',' ) ) set @str2='' declare SyncOrderCursor cursor for select b.Name from dbo.ShopStore as a inner join dbo.Shop as b on a.StoreGid=b.Gid ))+',%' open SyncOrderCursor fetch next from SyncOrderCursor into @
1.TREE表: [strID] [int] IDENTITY(1,1) NOT NULL,[strName] [nvarchar](50) NOT NULL, 2.SubInfo CREATE TABLE [dbo].[SubInfo]( [SuBID] [int] NOT NULL, [SubTreeID] [nvarchar](max) NULL, SQL语句为: select a.strID,a.strName from Tree as a where exists(select * f
SELECT * FROM JBL_WebLog WHERE JBL_WebLog_PID IN ( --根据userName分类获取数据最小ID列表 SELECT MIN(JBL_WebLog_PID) FROM JBL_WebLog GROUP BY UserName ); 上面是数据库自增长的ID,但是有很多重复的对象数据,现在只需要看每个状态的一条数据 比如账户aasaas登录很多次,但是现在我只想知道他是不是登陆过,所以只要取出来多次登录中的一次就行了 下面是 查询记录中只有一条的数