小^_^曦

导航

SQL_Update

1、将表B中的数据更新到表A(Cardno要为空)

①update A set A.CardNo = B.CardNo from A,B where B.Id = A.Id and A.CardNo is null    

②update A set A.CardNo=(select B.CardNo from B inner join A on B.ID=A.ID )

2、利用带关联子查询Update语句更新数据

① UPDATE b SET b.EmployeeID=a.EmployeeID FROM Tests a,OriginalCheckData b WHERE 

b.CardNo = a.CardNo AND b.EmployeeID IS NULL

② Update Table1 

set c = (select c from Table2 where a = Table1.a)
where c is null

 

③ update

(select A.bnum ,A.newqiantity,B.qiantity from A
left join B on A.bnum=B.bnum) AS C
set C.newqiantity = C.qiantity
where C.bnum ='001'

3、修改数据库名称

①ALTER DATABASE oldname MODIFY NAME = newname;--修改数据库名称

② sp_renamedb  oldname,newname   --修改数据库名称

4、批量修改某列中的数据:

UPDATE dbo.X_Dept SET Remark= CASE Remark
WHEN '销售' THEN 'SAML'
WHEN '仓库' THEN 'STRL'
ELSE Remark end

5、批量修改数据(行)
update  X_Dept set remark = dx,age=11,sex='man'

--5.1、模糊修改:

update X_Dept set remark =1 where remark like '%明'

6、修改数据库表名称:
EXEC sp_rename 'Deptments'(旧),'Deptment'(新)
EXEC sp_rename 'oldname','newname'

6.1、修改数据库登陆密码(忘记密码的情况下)

sp_password null,'123456','sa'

7、修改数据库列名:
EXEC sp_rename 'Customer.[CustomerName1]', 'CustomerName', 'COLUMN'
EXEC sp_rename 'table.name','oldfiled','newfiled',COLUMN

8、修改数据库视图名称:
EXEC sp_rename 'V_KMCSYE(旧)', 'V_KMCSYE(新)'


9、修改数据存储过程图名称:
EXEC sp_rename 'MY_SP_TZKC1', 'MY_SP_TZKC'

10、修改数据库触发器名称:


11.1修改变长文本型字段的大小:
alter table Table1 alter column Column1 varchar(10)

11.2 修改字段的名称

①alter table 表名 rename column A to B

②execute sp_rename '表名.字段名','新字段名'

11.3 修改字段的字段类型

alter table 表名 alter column 字段名 type not null          

12、

①表与表可多次连接,但是表别名不能一样

②批量修改数据,同列同数据,指定ID修改(ID=4和ID=5的规格全部改为500ml)
UPDATE dbo.SAL_X_CO2 SET Specification='500ml' WHERE Id in(4,5)
③批量修改数据,不同列不同数据,不指定ID修改??

 13、给没有自增列的表加一个自增字段(按指定增值设置)

a、更新一个列按一定的顺序排列.加自增列tempCol ,101为起始值,1为自增值,更新之后删掉这列                            

b、给没有自动增长列的表插入数据,先添加一个自动增长列,复制表,在此表加,最后在插入到原始表中并删除不需要的列--SQL

三步走: ①alter table Tables add TempCol int identity(101,1); ②Update Tables ID=TempCol; ③alter table Tables drop column TempCol

 14、批量更新ID,每个ID逐行+1

批量更新ID,逐行+1,要先将ID值全部赋值为1
UPDATE A
SET EmployeeID=1+CAST(RN AS NVARCHAR)
FROM (SELECT *,ROW_NUMBER() OVER (ORDER BY EmployeeID) AS RN
FROM test
WHERE EmployeeID=1) AS A
WHERE RN<>1 AND RN<=500

15、原始记录表中给员工ID为空的数据赋值员工ID

UPDATE a SET a.employeeid = b.EmployeeID FROM dbo.OriginalCheckData a,dbo.OriginalCheckData b WHERE a.CardNo 
=b.CardNo AND a.EmployeeID IS NULL AND b.EmployeeID IS NOT NULL /*AND a.OccurTime<'2018-07-01'*/

16、无自增和主键需要加一个序号

Update MyExcelTable
Set RPID=(select max(isnull(RPID,0)) from RewardsAndPunishment )+XH

17、随机生成时间(21:30-21:36之间),将时间转换为整数来取。如分钟数转为秒数,5分钟转为300/s

SELECT  DATEADD(ss,CONVERT(INT,360*RAND(CHECKSUM(NEWID()))),'21:30')

18、找回考勤数据。打卡后有记录,但是empid为空时需要执行的语句:

UPDATE a SET a.EmpID = b.EmpID,a.EmpNo = b.EmpNo FROM (SELECT CardID,EmpID,EmpNo FROM AttCardData WHERE EmpID ='' AND YYMMDD >='2020-01-16') a
,AttCardData b WHERE a.CardID = b.CardID AND a.EmpID = '' AND b.YYMMDD >='2020-01-14'

 

posted on 2018-10-03 15:55  小~曦  阅读(100)  评论(0)    收藏  举报