insert into city --找出Hotel表中不存在于city表中的城市名 select disTINCT rtrim(ltrim(cityname)) from Hotel e WHERE not EXISTS (SELECT * FROM city eb WHERE eb.cityname=e.cityname)
--------------------------------Insert--------------------------------- -- 多条数据一次insert插入 INSERT INTO table1 SELECT '张三1','aaa','90' union all SELECT '张三2','90' union all SELECT '张三3','90' /* INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1 要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。示例如下: INSERT INTO SELECT语句复制表数据 */ --1.创建测试表 create TABLE Table1 ( a varchar(10),b varchar(10),c varchar(10),CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED ( a ASC ) ) ON [PRIMARY] create TABLE Table2 ( a varchar(10),d int,CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED ( a ASC ) ) ON [PRIMARY] GO --2.创建测试数据 Insert into Table1 values('赵','asds','90') Insert into Table1 values('钱','100') Insert into Table1 values('孙','80') Insert into Table1 values('李',null) GO select * from Table2 --3.INSERT INTO SELECT语句复制表数据 Insert into Table2(a,c,d) select a,5 from Table1 GO --4.显示更新后的结果 select * from Table2 GO /* 结果 a c d 李 NULL 5 钱 100 5 孙 80 5 赵 90 5 */ --5.删除测试表 drop TABLE Table1 drop TABLE Table2 /* SELECT INTO FROM语句 语句形式为:SELECT vale1,value2 into Table2 from Table1 要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。示例如下: SELECT INTO FROM创建表并复制表数据 */ --1.创建测试表 create TABLE Table1 ( a varchar(10),CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED ( a ASC ) ) ON [PRIMARY] GO --2.创建测试数据 Insert into Table1 values('赵',null) GO --3.SELECT INTO FROM语句创建表Table2并复制数据 select a,c INTO Table2 from Table1 GO --4.显示更新后的结果 select * from Table2 GO /* a c 李 NULL 钱 100 孙 80 赵 90 */ --5.删除测试表 drop TABLE Table1 drop TABLE Table2
-- 根据表Adjustment中的记录删除Emp_Bak中对应的数据 DELETE Emp_Bak E WHERE EXISTS ( SELECT 'X' FROM Adjustment A WHERE E.Emp_Id = A.Emp_Id ) DELETE Emp_Bak E WHERE Emp_Id IN ( SELECT A.Emp_Id FROM Adjustment A WHERE E.Emp_Id = A.Emp_Id ) --103,ORACLE 中删除表Emp_Bak中重复数据 --JOIN DELETE Emp_Bak D WHERE ROWID > ( SELECT MIN(ROWID) FROM Emp_Bak R WHERE D.Emp_Id = R.Emp_Id ) --NOT IN DELETE Emp_Bak D WHERE ROWID NOT IN ( SELECT MIN(ROWID) FROM Emp_Bak R GROUP BY R.Emp_Id ) --104,sql SERVER 删除重复数据 分三步 首先将非重复数据存储到临时表,然后清空原数据表,最后将临时表数据存回原数据表 --STEP01 SELECT disTINCT Emp_id,Emp_Name,Dept_id,Mobile,Ext,Salary,Email,Date_Update INTO #Emp_Bak FROM Emp_Bak --STEP02 TruncATE TABLE Emp_Bak --STEP03 INSERT INTO Emp_Bak SELECT Emp_id,GETDATE() Date_Create -- FROM #Emp_Bak ------------------------------4.5------------------------------------ --105,ORACLE,删除大量数据时 可能导致数据库事务日志文件急剧扩展,甚至无法继续进行事务处理等问题,可用分批删除数据方法 DECLARE n NUMBER; BEGIN LOOP EXIT WHEN n=0; DELETE EMP_BAK WHERE ROWNUM<=5 AND Dept_Id Like 'I%'; n :=sql%rOWCOUNT; DBMS_OUTPUT.PUT_LINE( n ); COMMIT; END LOOP; END; --105,sql SERVER,WHILE (@@ROWCOUNT>0) BEGIN DELETE TOP(5) FROM Emp_Bak WHERE Dept_Id Like 'I%' END -------------------------------- ------------------------------5.1------------------------------------ --117 SELECT TO_CHAR(DATE'-4712-01-01','J') "JDay(Base)",TO_CHAR(DATE'2010-01-01','J') "JDay",(TO_CHAR(DATE'2010-01-01','J') -TO_CHAR(DATE'-4712-01-01','J'))/365.25 Diff FROM DUAL --117 SELECT DATE'2010-03-17' Today,TIMESTAMP '2010-3-17 8:28:40' Now FROM DUAL ------------------------------5.4------------------------------------ --124,ORACLE SELECT NVL(A,'新值') "test1.A",COALESCE(A,'新值')"test1.B",B,C) "test2.A",NVL(A,NVL(B,C)) "test2.B" FROM ( SELECT NULL A,NULL B,'非NULL' C FROM DUAL ) --124,sql SERVER SELECT ISNULL(A,'新值') "test1.A",'新值') "test1.B",C) "test2.A",ISNULL(A,ISNULL(B,C)) "test2.B" FROM ( SELECT NULL A,'非NULL' C ) A --125 --sql SERVER SELECT VAL,NULLIF(VAL,0) "NULLIF(VAL,0)" FROM ( SELECT 0 VAL --FROM DUAL UNION ALL SELECT 20 VAL --FROM DUAL ) A --ORACLE SELECT VAL,0)" FROM ( SELECT 0 VAL FROM DUAL UNION ALL SELECT 20 VAL FROM DUAL ) A
--mssql去空格 SELECT REPLACE(REPLACE(REPLACE(REPLACE(CAST('abc def ghi cd e' AS VARCHAR),CHAR(13) + CHAR(10),''),CHAR(13),CHAR(10),' ','')
-- 查询table1中 city相同数目大于1的 且text字段为空 select * from table1 where city in (select city from table1 group by city having count(*)>1) and text is null
--sql:删除重复数据,只保留一条 --在几千条记录里,存在着些相同的记录,如何能用sql语句,删除掉重复的呢 --1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) --2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 delete from people where peopleName in (select peopleName from people group by peopleName having count(peopleName) > 1) and peopleId not in (select min(peopleId) from people group by peopleName having count(peopleName)>1) --3、查找表中多余的重复记录(多个字段) select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) --4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录 delete from vitae a where (a.peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) --5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录 select * from vitae a where (a.peopleId,seq having count(*)>1) --6.消除一个字段的左边的第一位: update tableName set [Title]=Right([Title],(len([Title])-1)) where Title like '村%' --7.消除一个字段的右边的第一位: update tableName set [Title]=left([Title],(len([Title])-1)) where Title like '%村' --8.假删除表中多余的重复记录(多个字段),不包含rowid最小的记录 update vitae set ispass=-1 where peopleId in (select peopleId from vitae group by peopleId,seq having count(*) > 1) and seq in (select seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。