ehxz 发表于 2006-12-18 22:42:43

SQL高手篇:精妙SQL语句说明介绍

  说明:复制表(只复制结构,源表名:a 新表名:b)<br />  <br />  SQL: select * into b from a where 1<>1<br />  <br />  说明:拷贝表(拷贝数据,源表名:a 目标表名:b)<br />  <br />  SQL: insert into b(a, b, c) select d,e,f from b;<br />  <br />  说明:显示文章、提交人和最后回复时间<br />  <br />  SQL: select a&#46;title,a&#46;username,b&#46;adddate from table a,(select max(adddate) adddate from table where table&#46;title=a&#46;title) b<br />  <br />  说明:外连接查询(表名1:a 表名2:b)<br />  <br />  SQL: select a&#46;a, a&#46;b, a&#46;c, b&#46;c, b&#46;d, b&#46;f from a LEFT OUT JOIN b ON a&#46;a = b&#46;c<br />  <br />  说明:日程安排提前五分钟提醒<br />  <br />  SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5<br />  <br />  说明:两张关联表,删除主表中已经在副表中没有的信息<br />  <br />  SQL:<br />  <br />  delete from info where not exists ( select * from infobz where info&#46;infid=infobz&#46;infid )<br />  <br />  说明:--<br />  <br />  SQL:<br />  <br />  SELECT A&#46;NUM, A&#46;NAME, B&#46;UPD_DATE, B&#46;PREV_UPD_DATE FROM TABLE1,(SELECT X&#46;NUM, X&#46;UPD_DATE, Y&#46;UPD_DATE PREV_UPD_DATE FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND FROM TABLE2 WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X, (SELECT NUM, UPD_DATE, STOCK_ONHAND FROM TABLE2 WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') || '/01','YYYY/MM/DD') - 1, 'YYYY/MM') ) Y, WHERE X&#46;NUM = Y&#46;NUM (+)AND X&#46;INBOUND_QTY + NVL(Y&#46;STOCK_ONHAND,0) <> X&#46;STOCK_ONHAND ) B WHERE A&#46;NUM = B&#46;NUM<br />  <br />  说明:--<br />  <br />  SQL:<br />  <br />  select * from studentinfo where not exists(select * from student where studentinfo&#46;id=student&#46;id) and 系名称='"&strdepartmentname&"' and 专业名称='"&strprofessionname&"' order by 性别,生源地,高考总成绩<br />  说明: 从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源)<br />  <br />  SQL:<br />  <br />  SELECT a&#46;userper, a&#46;tel, a&#46;standfee, TO_CHAR(a&#46;telfeedate, 'yyyy') AS telyear, SUM(decode(TO_CHAR(a&#46;telfeedate, 'mm'), '01', a&#46;factration)) AS JAN, SUM(decode(TO_CHAR(a&#46;telfeedate, 'mm'), '02', a&#46;factration)) AS FRI, SUM(decode(TO_CHAR(a&#46;telfeedate, 'mm'), '03', a&#46;factration)) AS MAR, SUM(decode(TO_CHAR(a&#46;telfeedate, 'mm'), '04', a&#46;factration)) AS APR, SUM(decode(TO_CHAR(a&#46;telfeedate, 'mm'), '05', a&#46;factration)) AS MAY, SUM(decode(TO_CHAR(a&#46;telfeedate, 'mm'), '06', a&#46;factration)) AS JUE,SUM(decode(TO_CHAR(a&#46;telfeedate, 'mm'), '07', a&#46;factration)) AS JUL, SUM(decode(TO_CHAR(a&#46;telfeedate, 'mm'), '08', a&#46;factration)) AS AGU, SUM(decode(TO_CHAR(a&#46;telfeedate, 'mm'), '09', a&#46;factration)) AS SEP, SUM(decode(TO_CHAR(a&#46;telfeedate, 'mm'), '10', a&#46;factration)) AS OCT, SUM(decode(TO_CHAR(a&#46;telfeedate, 'mm'), '11', a&#46;factration)) AS NOV,SUM(decode(TO_CHAR(a&#46;telfeedate, 'mm'), '12', a&#46;factration)) AS DEC FROM (SELECT a&#46;userper, a&#46;tel, a&#46;standfee, b&#46;telfeedate, b&#46;factration FROM TELFEESTAND a, TELFEE b WHERE a&#46;tel = b&#46;telfax) a GROUP BY a&#46;userper, a&#46;tel, a&#46;standfee, TO_CHAR(a&#46;telfeedate, 'yyyy')<br />  <br />  说明:四表联查问题:<br />  <br />  SQL: select * from a left inner join b on a&#46;a=b&#46;b right inner join c on a&#46;a=c&#46;c inner join d on a&#46;a=d&#46;d where &#46;&#46;&#46;&#46;&#46;<br />  <br />  说明:得到表中最小的未使用的ID号<br />  <br />  SQL:<br />  <br />  SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b&#46;HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID FROM Handle WHERE NOT HandleID IN (SELECT a&#46;HandleID - 1 FROM Handle a)

ehxz 发表于 2007-11-26 14:22:47

偶也在学习,大家一起努力!!:smile:
页: [1]
查看完整版本: SQL高手篇:精妙SQL语句说明介绍