经常会有时候要用到查询当天,近几天,本周,本月的相关数据,所以记录一下这些比较特殊的SQL语句~~
--当天
(usrRegTime >=CONVERT(varchar(10),getDate(),120)+' 00:00:00' and usrRegTime <=CONVERT(varchar (10),getDate(),120)+' 23:59:59')
--近三天
DateDiff(day,usrRegTime,getdate()) <=3
--本周
Datepart(year,usrRegTime)=DatePart(year,Getdate()) and DatePart(week,usrRegTime)=DatePart (week,GetDate())
--本月
Datepart(year,usrRegTime)=DatePart(year,Getdate()) and DatePart(month,usrRegTime)=DatePart (month,GetDate()) ......
(1)表名:购物信息
购物人 商品名称 数量
A 甲 2
B 乙 4
C 丙 1
A 丁 2
B 丙 5
……
(其他用户实验的记录大家可自行插入)
给出所有购入商品为两种或两种以上的购物人记录
答:select * from 购物信息 where 购物人 in (select 购物人 from 购物信息 group by 购物人 having count(*) >= 2);
我的答案:
SELECT *
from purchase t
WHERE ......
SQL语句复制表的方法
(2009-08-29 13:41:54)
标签:
sql
分类:计算机知识
如果目的表已经存在:
insert into DATAHR.DBO.GBITEM
select * from DEMO.DBO.GBITEM
如果目的表不存在:
select * into DATAHR.DBO.GBITEM
from DEMO.DBO.GBITEM
跨库导入
select * into [zk_news].[dbo].[News1] from [zk_media].[dbo].[News]
--备份数据库OFSys
BACKUP DATABASE OFSys to disk = 'e:/OFSys'
还原
restore database test from disk = 'c:\test'
精妙SQL语句
精妙SQL语句
说明:复制表(只复制结构,源表名:a 新表名:b)
SQL: select * into b from a where 1<>1
说明:拷贝表(拷贝数据,源表名:a 目标表名:b)
SQL: insert into b(a, b, c) select d,e,f from b;
说明:显示文章、提交人和最后回复时间
SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
说明:外连接查询(表名1:a 表名2:b)
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
说明:日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff('minute', ......
今天安装SQL SERVER 2000 个人版,安装最后弹出错误对话框:
“安装程序配置服务器失败。参考服务器错误日志和C:\windows\sqlstp.log”,从而无法安装。
到具体的目录查看显示"一般性网络错误",在网上搜索问题原因及解决方案如下:
此问题属于sql server的bug, GetComputerName 用于获取本地计算机名。客户端网络库组件 (DBMSLPCn.dll) 将该名称转换为全部大写。服务器网络库组件 (SSMSLPCn.dll) 保留返回时的名称。当 Windows 计算机名称包含大写字母和小写字母或者都是小写字母时安装会失败,提示一般性网络错误!
具体解决:解决方法是把计算机名全改成大写就行了。
经过验证,这个方法绝对正确。而根据我这次解决问题的经验,再加一个细节。
在“我的电脑”上方,右键“属性”->“计算机名”->“计算机描述”里面可以直接修改。
我第一次就是这样改的,但发现在“sqlstp.log”里面显示的计算机名仍然不是大写,怎么办呢,我就在注册表里面将所有用户名或用户域名相关的小写的都找出来,改成大写,重启后,安装就可以了。 ......
Sql Server 中一个非常强大的日期格式化函数
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
Select CONVERT(varchar(100), GE ......
题目:有A和B俩个表,都定义相同的主键,写出SQL语句找出A表中有而B表中没有的记录,然后把没有的记录插入到B表中。
SQL语句如下:
CREATE TABLE A_MINUS_B AS ---创建一个差集表A_MINUS_B ,注意SELECT 语句一定要A表在前。
SELECT * from A
MINUS
SELECT * from B
INSERT INTO B(field1,field2,........) ----把差集插入B表,注意插入的字段顺序要相同,数据类型也要相同。
SELECT field1,field2......
from A_MINUS_B
上面语句在ORACLE 10G 以DEPT表为试验执行成功。也可能有更高效的办法,大家一起来讨论。可用游标来处理吧,我还没学到这部分。以后有我会补上,当然各位大侠也可先写上了。
insert into B select * from A where not exists(select 1 from B where B.KEYWORD = A.KEYWORD) ......