ASP数据库编制程序SQL常用本领

表达:复制表(只复制构造,源表名:a新表名:b卡塔尔 select*intobfromawhere11
表明:拷贝表(拷贝数据,源表名:a目的表名:bState of Qatarinsertintob(a,b,c卡塔尔selectd,e,ffromb; 表达:显示小说、提交人和末段回复时间
selecta.title,a.username,b.adddatefromtablea,(selectmax(adddateState of Qataradddatefromtable
wheretable.title=a.title卡塔尔(قطر‎b 表达:外接连查询(表名1:a表名2:bState of Qatarselecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c
表明:日程布置提前陆分钟提醒select*from日程铺排wheredatediff(‘minute’,f以前时间,getdate(卡塔尔国卡塔尔5
表达:两张关联表,删除主表中曾经在副表中尚无的音讯deletefrominfowherenotexists(select*frominfobzwhereinfo.infid=infobz.infid)
说明:– SQL: SELECTA.NUM,A.NAME,B.UPD_DATE,B.PREV_UPD_DATE
FROMTABLE1, (SELECTX.NUM,X.UPD_DATE,Y.UPD_DATEPREV_UPD_DATE
FROM(SELECTNUM,UPD_DATE,INBOUND_QTY,STOCK_ONHAND FROMTABLE2
WHERETO_CHAR(UPD_DATE,’YYYY/MM’)=TO_CHAR(SYSDATE,’YYYY/MM’))X,
(SELECTNUM,UPD_DATE,STOCK_ONHAND FROMTABLE2
WHERETO_CHAR(UPD_DATE,’YYYY/MM’)=
TO_CHAR(TO_DATE(TO_CHAR(SYSDATE,’YYYY/MM’)||’/01′,’YYYY/MM/DD’)-1,’YYYY/MM’))Y,
WHEREX.NUM=Y.NUM
ANDX.INBOUND_QTY+NVL(Y.STOCK_ONHAND,0)X.STOCK_ONHAND)B
WHEREA.NUM=B.NUM 说明:–
select*fromstudentinfowherenotexists(select*fromstudentwhere
studentinfo.id=student.id卡塔尔and系名称='”&strdepartmentname&”‘and专门的学业名称
='”&strprofessionname&”‘orderby性别,生源地,高等学园统招考试总战绩从数据库中去一年的各单位电话费计算(电话费定额贺电化肥项目清单四个表来源)
SELECTa.userper,a.tel,a.standfee,TO_CHAR(a.telfeedate,’yyyy’)AStelyear,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’01’,a.factration))ASJAN,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’02’,a.factration))ASFRI,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’03’,a.factration))ASMAR,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’04’,a.factration))ASAPR,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’05’,a.factration))ASMAY,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’06’,a.factration))ASJUE,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’07’,a.factration))ASJUL,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’08’,a.factration))ASAGU,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’09’,a.factration))ASSEP,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’10’,a.factration))ASOCT,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’11’,a.factration))ASNOV,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’12’,a.factration))ASDEC
FROM(SELECTa.userper,a.tel,a.standfee,b.telfeedate,b.factration
FROMTELFEESTANDa,TELFEEb WHEREa.tel=b.telfax)a
GROUPBYa.userper,a.tel,a.standfee,TO_CHA奥迪Q7(a.telfeedate,’yyyy’卡塔尔(قطر‎表明:四表联查问题select*fromaleftinnerjoinbona.a=b.brightinnerjoincona.a=c.cinnerjoindon
a.a=d.dwhere….. 表明:获得表中型小型小的的未采取的ID号
SELECT(CASEWHENEXISTS(SELECT*FROMHandlebWHEREb.HandleID=1卡塔尔THENMIN(HandleID卡塔尔国+1
ELSE1ENDState of QatarasHandleIDFROMHandleWHERENOTHandleIDIN(SELECTa.HandleID-1FROM
HandleaState of Qatar 七个SQL语句的标题:行列转变 select*fromv_temp
下边包车型客车视图结果如下: user_namerole_name ————————-
系统管理员管理员 feng管理员 feng平常顾客 test平日客户 想把结果产生那样:
user_namerole_name ————————— 系统管理员管理员feng管理员,经常客户 test平日客商 ===================
createtablea_test(namevarchar(20),role2varchar(20))
insertintoa_testvalues(‘李’,’管理员’)
insertintoa_testvalues(‘张’,’管理员’)
insertintoa_testvalues(‘张’,’常常客户’卡塔尔国insertintoa_testvalues(‘常’,’日常顾客’卡塔尔国createfunctionjoin_str(@contentvarchar(100)) returnsvarchar(2000) as
begin declare@strvarchar(2000) set@str=”
select@str=@str+’,’+rtrim(role2)froma_testwhere[name]=@content
select@str=right(@str,len(@str)-1) return@str end go –调用:
select[name],dbo.join_str([name])role2froma_testgroupby[name]
–selectdistinctname,dbo.uf_test(name)froma_test
急迅比较构造同样的两表

一.如何删除八个表中有些字段重复的列呀,举个例证 表[table1] idname 1aa
2bb 3cc 1aa 2bb 3cc 笔者想最终的表是那样的 idname 1aa 2bb 3cc 回答:
将记录存到有时表#t中,重复的记录只存一条,然后将有时表#t中的记录再存回原表中,注意“selectdistinctid,class,name”要含有你供给的装有字段,不然某个字段就被删掉了。
在询问微电脑里施行上边代码: SELECTDISTINCTid,,name INTO#t
FROMtable1DELETEtable1 INSERT INTOtable1 SELECT* FROM#t
二.搜索既会VB又会PHP的人 表是这么的: ID工作者技能 11VB 21PHP 31ASP 42PHP
53ASP 64VB 74ASP 要从那张表中寻找既会VB又会PHP的人,SQL该怎么写啊?
回答:
SELECT职员和工人FROM[Table]WHERE员工IN(SELECT员工FROM[Table]WHERE技巧=’VB’卡塔尔(قطر‎AND技能=’PHP’
三.数据库归并难题 access里的四个表,想让多少个表的源委统一 表[a]协会如下:
[id]号码自动编号 [name]名称文本 [price]价格数字 [guige]规格文本
[changjia]生产商家文本 [baozhuang]包裹文本 [danwei]单位文本
共有900条记下,除了id和name字段,别的均可感到空 表[b]构造如下:
[id]数码自动编号 [name]名称文本 [price]价钱数字
[changjia]分娩厂商文本 [danwei]单位文本 [xingzhi]特性文本
共有800条记下,除了id和name字段,比表[a]少多少个字段,但还多一个[xingzhi]的字符安其余均可感觉空
未来想生成三个新表[c],布局如下,而且内容是多个表的剧情之和。
[id]号码自动编号 [name]名称文本 [price]价钱数字 [guige]标准文本
[changjia]分娩厂家文本 [baozhuang]包裹文本 [danwei]单位文本
[xingzhi]天性文本
用sql语句也得以,手工业操作也好,xml也好,别管怎样啊,怎么贯彻啊,汉子要烦恼坏了,真要让大家再输入800条记下,笔者就挂了。
回答: 1.这么 insertintoc(id,name,…..卡塔尔 selectid,name,….. froma
insertintoc(id,name,…..State of Qatar selectmax(id卡塔尔+1,name,….. fromb 2.更改:
若是一直在查询深入分析器里试行: insertintoc(name,…..卡塔尔国 selectname,…..
froma insertintoc(name,…..State of Qatar selectname,….. fromb 3.用union方法
insertinto[c]([id],编号,自动编号)select[id],编号,自动编号from[a] union
select[id],编号,自动编号from[b] 4.asp的消释办法 %’循环检验a表
Setrs=Server.CreateObect(“ADODB.RECO福特ExplorerDSET”)rs.open”select*fromaorderbyid”,conn,1,1 Dowhilenotrs.eof
CallactAdd(rs(“name”卡塔尔国卡塔尔国’调用像b表加多内容的函数! rs.MoveNext Loop
rs.Close Setrs=Nothing SubactAdd(txtState of Qatar Dimts,sql
sql=”insertintob(name卡塔尔国values(‘”&txt&”‘卡塔尔(قطر‎” Setts=Conn.Execute(sql卡塔尔ts.Close Setts=Nothing endSub % 5.asp的化解办法 %
dimarr_temp1,arr_temp2,arr_data
setrs=conn.execute(“selectid,name,price,guige,changjia,baozhuang,danweifroma”)
arr_temp1=rs.getrows rs.close setrs=nothing
setrs=conn.execute(“selectid,name,price,guige,changjia,danwei,xingzhifromb”)
arr_temp2=rs.getrows rs.close setrs=nothing rem初阶次拍卖卖
redimarr_data(ubound(arr_temp1,2)+ubound(arr_temp2,2卡塔尔,7State of Qatarrem把五个数组的剧情复制进来 这一部分本人写了做三个循环 然后再存进数据库
% 最终转一些非凡的SQL语句: 1.蛙蛙引入:一些娇小的SQL语句
表明:复制表(只复制布局,源表名:a新表名:b)SQL:select*intobfromawhere11
表达:拷贝表(拷贝数据,源表名:a指标表名:b卡塔尔(قطر‎SQL:insertintob(a,b,cState of Qatarselectd,e,ffromb;
表明:展现文章、提交人和尾声回复时间
SQL:selecta.title,a.username,b.adddatefromtablea,(selectmax(adddate卡塔尔(قطر‎adddatefromtablewheretable.title=a.titleState of Qatarb
表达:外接连查询(表名1:a表名2:b卡塔尔国SQL:selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c
表达:日程安顿超前五分钟提醒SQL:select*from日程布署wheredatediff(‘minute’,f早先时间,getdate(卡塔尔卡塔尔5
表明:两张关联表,删除主表中已经在副表中从未的新闻 SQL:
deletefrominfowherenotexists(select*frominfobzwhereinfo.infid=infobz.infid)
说明:– SQL: SELECTA.NUM,A.NAME,B.UPD_DATE,B.PREV_UPD_DATE
FROMTABLE1, (SELECTX.NUM,X.UPD_DATE,Y.UPD_DATEPREV_UPD_DATE
FROM(SELECTNUM,UPD_DATE,INBOUND_QTY,STOCK_ONHAND FROMTABLE2
WHERETO_CHAR(UPD_DATE,’YYYY/MM’)=TO_CHAR(SYSDATE,’YYYY/MM’))X,
(SELECTNUM,UPD_DATE,STOCK_ONHAND FROMTABLE2
WHERETO_CHAR(UPD_DATE,’YYYY/MM’)=
TO_CHAR(TO_DATE(TO_CHAR(SYSDATE,’YYYY/MM’)||’/01′,’YYYY/MM/DD’)-1,’YYYY/MM’))Y,
WHEREX.NUM=Y.NUM
ANDX.INBOUND_QTY+NVL(Y.STOCK_ONHAND,0)X.STOCK_ONHAND)B
WHEREA.NUM=B.NUM 说明:– SQL:
select*fromstudentinfowherenotexists(select*fromstudentwherestudentinfo.id=student.id卡塔尔and系名称='”&strdepartmentname&”‘and职业名称='”&strprofessionname&”‘orderby性别,生源地,高等高校统一招考总成绩表达:
从数据库中去一年的各单位电话费总括(电话费定额贺电化肥清单七个表来源)
SQL:
SELECTa.userper,a.tel,a.standfee,TO_CHAR(a.telfeedate,’yyyy’)AStelyear,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’01’,a.factration))ASJAN,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’02’,a.factration))ASFRI,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’03’,a.factration))ASMAR,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’04’,a.factration))ASAPR,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’05’,a.factration))ASMAY,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’06’,a.factration))ASJUE,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’07’,a.factration))ASJUL,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’08’,a.factration))ASAGU,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’09’,a.factration))ASSEP,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’10’,a.factration))ASOCT,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’11’,a.factration))ASNOV,
SUM(decode(TO_CHAR(a.telfeedate,’mm’),’12’,a.factration))ASDEC
FROM(SELECTa.userper,a.tel,a.standfee,b.telfeedate,b.factration
FROMTELFEESTANDa,TELFEEb WHEREa.tel=b.telfax)a
GROUPBYa.userper,a.tel,a.standfee,TO_CHA奥迪Q7(a.telfeedate,’yyyy’State of Qatar表达:四表联合检查难点:
SQL:select*fromaleftinnerjoinbona.a=b.brightinnerjoincona.a=c.cinnerjoindona.a=d.dwhere…..
表达:获得表中型Mini小的的未选用的ID号 SQL:
SELECT(CASEWHENEXISTS(SELECT*FROMHandlebWHEREb.HandleID=1卡塔尔国THENMIN(HandleID卡塔尔+1ELSE1END卡塔尔(قطر‎asHandleID
FROMHandle WHERENOTHandleIDIN(SELECTa.HandleID-1FROMHandleaState of Qatar2.去除重复数据 一、具备主键的情况 a.具备独一性的字段id(为独一主键卡塔尔国deletetable whereidnotin (
selectmax(id卡塔尔国fromtablegroupbycol1,col2,col3… 卡塔尔国groupby子句后跟的字段正是你用来剖断重复的条件,如只有col1,那么一旦col1字段内容雷同即表示记录一致。
b.具备合营主键 假设col1+’,’+col2+’,’…col5为协同主键
select*fromtablewherecol1+’,’+col2+’,’…col5in(
selectmax(col1+’,’+col2+’,’…col5)fromtable wherehavingcount(*卡塔尔(قطر‎1
groupbycol1,col2,col3,col4 State of Qatargroupby子句后跟的字段正是你用来判定重复的准则,如唯有col1,那么只要col1字段内容一律即表示记录同一。
c:判别全数的字段 select*into#aafromtablegroupbyid1,id2,….
deletetable insertintotable select*from#aa 二、没有主键的意况a:用有时表完结 selectidentity(int,1,1卡塔尔国asid,*into#tempfromta
delete#temp whereidnotin ( selectmax(id)from#groupbycol1,col2,col3…
) deletetableta insetintota(…) select…..from#temp
b:用改造表结构来兑现 altertable表addnew田野同志intidentity(1,1State of Qatar delete表
wherenew田野notin (
selectmin(new田野同志卡塔尔(قطر‎from表groupby除new田野同志外的享有字段 )altertable表dropcolumnnew田野先生

布局相近的两表,一表有记录3万条左右,一表有记录2万条左右,我怎样赶快搜索两表的例外记录?

给你叁个测量试验方法,从northwind中的orders表取数据。
select*inton1fromorders select*inton2fromorders select*fromn1
select*fromn2 –加多主键,然后修改n第11中学若干字段的好多条
altertablen1addconstraintpk_n1_idprimarykey(OrderID)
altertablen2addconstraintpk_n2_idprimarykey(OrderID)
selectOrderIDfrom(select*fromn1unionselect*fromn2)agroupbyOrderIDhaving
count(*卡塔尔(قطر‎1 应当能够,何况将分裂的记录的ID突显出来。
上边包车型地铁适用于两岸记录同一的事态,
select*fromn1whereorderidin(selectOrderIDfrom(select*fromn1unionselect*from
n2)agroupbyOrderIDhavingcount(*卡塔尔国1卡塔尔 至于双方互一纸空文的记录是相比较好管理的
–删除n1,n第22中学多少条记下 deletefromn1whereorderIDin(‘10728’,’10730’卡塔尔(قطر‎deletefromn2whereorderIDin(‘11000′,’11001’State of Qatar–*************************************************************
–双方都有该记录却不完全相符select*fromn1whereorderidin(selectOrderIDfrom(select*fromn1unionselect*from
n2)agroupbyOrderIDhavingcount(*卡塔尔国1卡塔尔(قطر‎ union
–n第22中学留存但在n1中不存的在10728,10730
select*fromn1whereOrderIDnotin(selectOrderIDfromn2卡塔尔 union
–n1中设有但在n第22中学不存的在11000,11001
select*fromn2whereOrderIDnotin(selectOrderIDfromn1卡塔尔各个办法取表里n到m条纪录: 1.
selecttopm*into一时表(或表变量卡塔尔国fromtablenameorderbycolumnname–将topm笔插入
setrowcountn select*from表变量orderbycolumnnamedesc 2.
selecttopn*from(selecttopm*fromtablenameorderbycolumnname卡塔尔aorderby
columnnamedesc 3.只要tablename里不曾别的identity列,那么:
selectidentity(int卡塔尔国id0,*into#tempfromtablename 取n到m条的言语为:
select*from#tempwhereid0=nandid0=m
倘让你在实行selectidentity(int卡塔尔id0,*into#tempfromtablename这条语句的时候报错,那是因为
你的DB中间的selectinto/bulkcopy属性未有展开要先实行:
execsp_dboption你的DB名字,’selectinto/bulkcopy’,true
4.只要表里有identity属性,那么粗略:
select*fromtablenamewhereidentitycolbetweennandm
怎么着删除三个表中重复的记录? createtablea_dist(idint,namevarchar(20))
insertintoa_distvalues(1,’abc’) insertintoa_distvalues(1,’abc’)
insertintoa_distvalues(1,’abc’) insertintoa_distvalues(1,’abc’)
execup_distinct’a_dist’,’id’ select*froma_dist
createprocedureup_distinct(@t_namevarchar(30),@f_keyvarchar(30))
–f_key代表是分组字段﹐即主键字段 as begin
declare@maxinteger,@idvarchar(30卡塔尔国,@sqlvarchar(7999卡塔尔(قطر‎,@typeinteger
select@sql=’declarecur_rowscursorforselect’+@f_key+’,count(*)from’+@t_name+’
groupby’+@f_key+’havingcount(*)1′ exec(@sql) opencur_rows
fetchcur_rowsinto@id,@max while@@fetch_status=0 begin
select@max=@max-1 setrowcount@max
select@type=xtypefromsyscolumnswhereid=object_id(@t_name)andname=@f_key
if@type=56 select@sql=’deletefrom’+@t_name+’where’+@f_key+’=’+@id
if@type=167
select@sql=’deletefrom’+@t_name+’where’+@f_key+’=’+””+@id+””
exec(@sql) fetchcur_rowsinto@id,@max end closecur_rows
deallocatecur_rows setrowcount0 end select*fromsystypes
select*fromsyscolumnswhereid=object_id(‘a_dist’卡塔尔(قطر‎查询数据的最大排序问题CREATETABLEhard(quchar(11卡塔尔(قطر‎,cochar(11卡塔尔国,jenumeric(3,0卡塔尔卡塔尔国insertintohardvalues(‘A’,’1′,3卡塔尔(قطر‎ insertintohardvalues(‘A’,’2′,4卡塔尔(قطر‎insertintohardvalues(‘A’,’4′,2卡塔尔(قطر‎ insertintohardvalues(‘A’,’6′,9卡塔尔国insertintohardvalues(‘B’,’1′,4卡塔尔 insertintohardvalues(‘B’,’2′,5)insertintohardvalues(‘B’,’3′,6卡塔尔(قطر‎ insertintohardvalues(‘C’,’3′,4卡塔尔(قطر‎insertintohardvalues(‘C’,’6′,7State of Qatar insertintohardvalues(‘C’,’2′,3卡塔尔须求查询出来的结果如下: qucoje ————————— A69 A24 B36
B25 C67 C34 正是要按qu分组,每组中取je最大的前2位!!
况兼只好用一句sql语句!!!
select*fromhardawherejein(selecttop2jefromhardbwherea.qu=b.quorderbyje卡塔尔求删除重复记录的sql语句? 怎么样把具有同等字段的纪要删除,只留下一条。
举例,表test里有id,name字段 即便有name相符的记录只留下一条,别的的删减。
name的源委不定,相像的记录数不定。 有没犹如此的sql语句?
============================== A:三个完完全全的减轻方案:
将重复的笔录记入temp1表:
select[申明字段id],count(*)intotemp1from[表名]
groupby[注明字段id] havingcount(*卡塔尔国1 2、将不另行的笔录记入temp1表:
inserttemp1select[标记字段id],count(*)from[表名]groupby[注解字段id]havingcount(*卡塔尔(قطر‎=1 3、作三个含有全体不重复记录的表:
select*intotemp2from[表名]where标记字段idin(select标记字段idfromtemp1卡塔尔4、删除重复表: delete[表名] 5、恢复表:
insert[表名]select*fromtemp2 12观看全文

发表评论

电子邮件地址不会被公开。 必填项已用*标注