|
  
- 帖子
- 141
- 积分
- 565
- 阅读权限
- 200
- 最后登录
- 2009-1-7
|
楼主
发表于 2008-8-30 20:09
| 只看该作者
比较经典,常用的SQL语句供大家参考,希望对大家有所帮助
说明:复制表(只复制结构,源表名:a 新表名:b) ( f# l/ Y7 L( S# u5 M. A5 C
! h3 h) D1 ^$ }7 y& I2 X
SQL: select * into b from a where 1<>1
4 }6 ^( h+ ~$ T: \4 M/ W8 d- Y; v
( h% Z* M3 b0 q( P( I2 p 说明:拷贝表(拷贝数据,源表名:a 目标表名:b) # R/ `0 K6 O" T& R; U+ _9 |" G
- H% e `9 o; M; J" y/ `
SQL: insert into b(a, b, c) select d,e,f from b; $ G0 h# L0 R6 A( h
3 e* f4 S7 P& E. d 说明:显示文章、提交人和最后回复时间 6 m9 p0 I# _' X2 O$ N: c
3 U: K$ K. N B6 @; T" d
SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b - }# L B, R$ g0 L
0 W5 `6 \! f2 G$ o! ]' c, Y, f
说明:外连接查询(表名1:a 表名2:b)
6 Z1 t+ `% J7 |; b( ^ T
4 f) z5 s0 A: }% _0 Y 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
7 k1 {$ P! v% N& c8 |
, M* j8 X# V% X1 Z$ }% Z$ U2 ] 说明:日程安排提前五分钟提醒 % V% ]4 ]) o( |. Y" k& W+ z+ Q2 x
, j5 v7 Q1 `( x SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5
( x5 {8 ^, H5 b' S4 L# q- [/ K$ D; r5 e' B
说明:两张关联表,删除主表中已经在副表中没有的信息
3 i1 `- v, W# [6 p, x7 f- L B
) f8 d4 t5 o3 q4 _% s SQL:
0 w9 H( p' |. c l9 k2 o7 }4 M) _! F# f8 s. e
delete from info where not exists ( select * from infobz where info.infid=infobz.infid 0 {9 L& `9 Z4 L" f" }
- m/ y$ c+ I$ l0 U) S! [
说明:--
& D. v! ^' L* z/ X. w- `
! Q' t3 K" i+ R/ n SQL: / g. y2 }6 f3 b$ p# g/ k- D
# U g- Q# T) b) w' a: r
SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE
* X9 {2 s( c6 ^, x7 B- k L2 o. |
% \+ O9 J$ z9 k' [5 [. ~ FROM TABLE1, # r/ ]" D# m# F. _ l
( }8 ^: ^2 Q# A
(SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE
% E7 G7 b8 D6 o) r! o
/ K' r! e' h; ^ x FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND # M4 }. e$ ~7 M; s- @
/ ]( l) }1 `- m9 O' X6 M3 D/ J
FROM TABLE2
2 |) g+ k5 @# p% w1 t, [# w) K+ x9 t" q: k
WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X,
4 L4 O% D% o( w/ K
X9 E7 |' m3 K/ Z4 z6 K (SELECT NUM, UPD_DATE, STOCK_ONHAND
2 i7 c! I1 A2 Y8 C1 O. q7 `4 d" b+ l p2 [4 y; C) I# ^; X0 \
FROM TABLE2 & x* a1 s1 R; D" [9 V8 i) a
1 J7 V) b k8 o" z: r; P. y
WHERE TO_CHAR(UPD_DATE,'YYYY/MM') =
* W/ ~6 I: ]: F! s5 l- O$ G9 ~1 w/ M, V( J8 @( k
TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') Ζ '/01','YYYY/MM/DD') - 1, 'YYYY/MM') Y, 7 g* g* X( P/ Y. {: S
& _5 N9 Z0 D6 w+ k5 p l WHERE X.NUM = Y.NUM (+) # M4 u1 r/ k( O1 [# c
- X/ _4 \% t1 m& Y, i$ Q! K
AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <> X.STOCK_ONHAND B
# H4 {2 h. u5 H8 r0 Q7 P9 \+ N! u; O% K* d, T$ t+ E" N
WHERE A.NUM = B.NUM " h7 X3 }; R: n! N6 H/ {
7 f" s" ~/ \+ }# z 说明:-- $ R& L6 I' P* }9 l. ~5 e2 Q( Q
& O$ E; L& O Q5 w$ ]8 ~3 u SQL:
$ [2 V4 `, w. Q( q
) R0 l* a: J7 O" y* y* z- } M select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名称='"&strdepartmentname&"' and 专业名称='"&strprofessionname&"' order by 性别,生源地,高考总成绩
6 d. Y, Y+ y2 R' r. X( j2 x, Y; |2 O/ R3 U# y' L$ e
说明: : u. a* y; e8 k7 G* O
. _- V) |7 i! M. O- \2 X
从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源)
0 G; W# m& b; w, [+ C
% r5 D) w3 m& R+ J( U- F SQL:
1 Q. \7 {+ P9 y/ n6 I' ]9 _$ q/ B5 d" ?/ q0 N
SELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') AS telyear,
# v# \1 q! \ o% Z7 o: `0 c
% w" r/ e& u0 @, \' G& s SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01', a.factration)) AS JAN, . k' o* a$ U+ i2 d& G
) B, c8 s* L: c# ^6 r
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02', a.factration)) AS FRI,
+ g. ]3 A8 f# j1 V9 ~- [+ \$ w1 C$ ?; \8 G3 |' n. w, e
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03', a.factration)) AS MAR, 2 | Z; p8 X5 ~; |$ h, v" ^
6 L) O' g, Q; j+ Z
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04', a.factration)) AS APR,
: @' b; W5 x& [3 w) F9 ?. S, \2 ^- n4 t6 K- B
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05', a.factration)) AS MAY, 0 s* `: P+ u+ Q/ q' `! \
/ E) R2 j) G2 H8 b0 c SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06', a.factration)) AS JUE, 8 d1 y. q" X& F
: {( W! ]0 z. ?! T
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07', a.factration)) AS JUL, / U) K' R2 j8 b" V- o
8 L- N' q! w5 {. R, Z4 \
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08', a.factration)) AS AGU,
% [+ B; h! E* g& ^
' J& n) }/ v, V) g1 o- O SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09', a.factration)) AS SEP,
9 z5 d& I% w% w! h {- f+ P4 B* N/ D9 {
1 Q$ ]" \4 d1 m1 g. d# ?" k) l SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10', a.factration)) AS OCT, 1 t% ?# \& c& X
) W2 V0 D' Y! s8 i" w9 F SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11', a.factration)) AS NOV, # m" B) q, r6 v# b0 e* G. E4 w
5 ?; h3 p5 r; u& Z
SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12', a.factration)) AS DEC
0 d) b2 C' Y7 F# C
0 o8 ~8 |! c% M' u7 ^# b0 E5 A FROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factration # V7 m; Y+ x; f8 g. J: e
2 R' Z7 B! Z# {6 ~+ T: \4 `
FROM TELFEESTAND a, TELFEE b 6 d" }. V2 [/ U. [ a
! F$ f1 [: K4 U! ?1 k0 L WHERE a.tel = b.telfax) a 5 l3 J+ {- a+ K4 V" g* u6 e9 p
5 R" a. ^7 ~/ R+ ~4 j
GROUP BY a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') 8 N0 O) U( |" @/ h k
; c, g9 W' F$ z! Z2 d4 J3 g 说明:四表联查问题:
& v4 j8 e: e4 } [% N B/ w
. k; b6 D0 X' G, b+ K/ y SQL: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
0 G4 ~6 o* b* k+ b5 y/ N' J6 R4 P- J
* b, P& P$ G6 k5 W1 O0 w 说明:得到表中最小的未使用的ID号
( r/ |. @2 \2 i+ y6 J* M R% W! a1 Q2 N3 p) `
SQL:
7 s# e8 x) X$ R, i5 l9 a. O E8 x& z& d+ ?0 ~3 n7 K$ S2 ~1 n0 ~5 ^
SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID
0 E2 |9 ~/ A' U! `2 ?! f
$ g* J$ v, j/ z FROM Handle 2 \$ ~# H- t# \- i2 d2 E
1 @( p$ s7 t$ w5 h8 R3 K
WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a) |
|