时间:2021-07-01 10:21:17 帮助过:13人阅读
1 ---临时表 2 CREATE TABLE #Temp 3 ( 4 ID INT , 5 Name NVARCHAR(50) , 6 Age INT 7 ); 8 9 ---全局临时表 10 CREATE TABLE ##TempAll 11 ( 12 ID INT , 13 Name NVARCHAR(50) , 14 Age INT , 15 UID INT 16 ); 17 18 ----with开头的临时表 19 WITH t AS ( SELECT a.ID , 20 a.Name 21 FROM #Temp AS a 22 INNER JOIN ##TempAll AS b ON b.ID = b.UID 23 ) 24 SELECT * 25 FROM t; 26 27 ---释放临时表 28 DROP TABLE #Temp; 29 DROP TABLE ##TempAll;
二、解析,编译sql
针对导数据时,写了一堆sql,不敢轻易执行,最好执行前先解析,编译,是否存在问题。在SQL SERVER中提供 SET PARSEONLY { ON | OFF } 和SET NOEXEC { ON | OFF } 语句。
SET PARSEONLY 表示只解析但不编译或执行语句。它会检查Tansact-SQL语句的语法并返回任何错误信息。 SET PARSEONLY on 开始分析语句,OFF 开始编译执行语句。
SET NOEXEC 表示编译但不执行语句。可以让 SQL Server 在执行 Transact-SQL 代码时,验证代码中的语法和对象名。它也可以用于调试通常是较大的批处理中的部分语句。
---解析 SET PARSEONLY ON; GO -----检查的语句 SELECT * FROM ##TempAll; ---编译执行 SET PARSEONLY OFF; GO ----------------------------------------- ---编译 SET NOEXEC ON; GO ----编译的语句 SELECT * FROM dbo.S_SJZD; GO -----开始编译执行 SET NOEXEC OFF; GO
三、去重
导数据时经常会遇到各种重复数据,去重也是重要的一环。常用的去重方法,我只道三种,1)DISTINCT;2)GROUPY BY ;3) ROW_NUMBER() OVER 排序去重。每一种都有各自的优缺点。
-------去重 ----1.DISTINCT SELECT DISTINCT Name FROM #Temp; ----2.Group By 去重 SELECT Name FROM #Temp GROUP BY Name HAVING COUNT(Name) > 1; ---3.排序去重 WITH t AS ( SELECT ROW_NUMBER() OVER ( PARTITION BY Name ORDER BY Name DESC ) AS a , * FROM #Temp ) SELECT * FROM t WHERE a = 1;
暂时先写到这里,遇到了,再整理。。。
关于sql server 的那些事
标签:生命周期 使用 导数据 having off 1.5 那些事 create select