极帝猫 10-10-2007 01:58 AM
SQL 试题(2)
去中国之前,还是给大家想了一个,哈哈。
[vV$TK5SX j+Z;S
问题:
JNm,u@y4hiL
RmVEj-n4~r4_-\o
我有一个 table,同样叫做 tbl。egq%a]*| ul,R\
里面有一个 field,叫 pkkey。
` v0^E2Pk}
它的 datatype 是 int(4),auto_increment。
bdC*Z4}y qR
~e9k'?e
时间久了,tbl 这个 table 也 delete 了很多笔的资料。5OE)LT{F]0SU
所以,pkkey 这个 field 的 value 未必是跟着 sequence 了。 H"}4[c8W/l
sbz*qY?h+w$^*i)x
现在,我要写一个 SQL Query,w7Fj IiMB
把所有不在 sequence 里面的 pkkey 找出来。!TN _'qM3f|5Nq$G
请问,我的 Query 要怎样写~?:ZHU321: :ZHU321:
JW|k
i
G2At}iI6h(}
例子:n(y]ke!E%K2_|
pkkeyi/s!FC){:x
19W7[pw[q(D
2
Oo$O6Ia3E
3
tPpbYy6U3UAf
5
4I9t;X)y1KL
6$go xs!F@rmXz
8w/pAP)z&w/s5K
9
M
E|t"C OW
10L0}
f1~!X|3Xq;efJ
12
g)?k5m.r[U
13
?k l$QB8}
b)]
14
s3iOkrCa[J
16"v,@0t:w'~^ ZHPA;V#D
18s4DX%a1\yf
20\1Pe&];iOq PY
21
q"xR!YiJ
23Fwc!}g'sl
y5~-s{Hq9U1c
我要的答案:E+S^O6o(Y
pkkey
Wk
nf+@
@&B*L
4C!J*d.eJ1S o6fon
7c!jdR:VkH
11$U}
Ud3cSXxLG*@JQ(w
15
2Vk5f7`$N&A-XtFa
17
1f[nY%RH~HN
19
4z*Eu1e3UX.c
22
8`s4O4e;}@!fh
k$R#n8EP] L&F|'e
[color=Red]※注意事项:要考虑我的 pkkey 不一定只有上面几个个,可能是 1 千,1 万,甚至是 10 万~[/color]
(yw#n)dv:}
r6Vqz
从中国回来后看大家的答案~
tT9[/GmZ.F
OM
:ZHU318: :ZHU318: :ZHU318:
系统 14-10-2007 12:23 AM
瓦~~~ 很難一下.
y3F.F_C
:ZHU328: :ZHU328: !B/`2}+_g~
有沒有給其他 TABLE 做 compare
JQN%\b)e5Rz
SQL ㄛ應該寫不出 =="
v+E;|hwp*HD S}QSF
V$P"kI3yxD
哈哈...:ZHU307: :ZHU307:
e*gT%QK5g3I[-cW
ㄛ就用假設性的來解答.
K)P\ut
d,Vg8f$r1[4U$`N
ANS:
7{a5ao:to+H6U*l{0Wk
CREATE 一個新的 table 比如 TBLCOMPARE 一個 field 叫 pkkey datatype 是 int(4)XB~)Mh6py Q k
接著寫一個 for loop 去insert TBLCOMPARE(pkkey) 从 1 到 [color=Red]SELECT MAX(PKKEY) FROM TBL[/color]
5rtj-U4s I2q
5ICyx,dp8UH8^y
最後
5YM6~y'K
h
SELECT PKKEY FROM TBLCOMPAREt4?:LVxc
LEFT OUTER JOIN TBL
KmRB$d3Si
ON (TBL.PKKEY = TBLCOMPARE.PKKEY))p OE)k$UO8us
WHERE TBL.PKKEY IS NULLZ.zl5}q!ucAa Q[
s4R+dt3V7N;r
4GMHV }"[ngH-^'Z
簡單的個人想法IN+G
m h,emC
:ZHU325: :ZHU325:
极帝猫 19-10-2007 10:20 AM
回复 沙发 系统 的帖子
想法不错,但是还有更好的。T/Q0oY C0rLQ.R
可以不用 insert 去另一个 table。fGUQ6hse
qN$O-y aD
提示:用 subquery。
;ZRo
hg}pqqX
:ZHU321: :ZHU321:
系统 19-10-2007 08:50 PM
[quote]原帖由 [i]神仙猫[/i] 于 2007-10-19 10:20 AM 发表 [url=http://www.e-dyn.com/forum/redirect.php?goto=findpost&pid=446331&ptid=30437][img]http://www.e-dyn.com/forum/images/common/back.gif[/img][/url][QU6Wd|_)Y%K3L{ G
想法不错,但是还有更好的。
5O U^_~4^
可以不用 insert 去另一个 table。
3W,Li \C1g
?,o3eG%O
9hKt{Z
z7}J)S*Mke
提示:用 subquery。vp;y$j'w^$Q
:ZHU321: :ZHU321: [/quote]
.h,L
\o@8?ly
%n
s
Z`#VGm0L
這樣如果在那個 tbl table 連續2 value以上是已經不在了 Ny1Un,l0j*Rg q
用subquery 還選的出麼?5T/s`3c
R
:ZHU334: :ZHU334:
痞子宪 19-10-2007 09:41 PM
SQL....没有概念...不会玩.....C++还会一点...或者mistubishi 的PLC... bG!U x"E
介绍一点SQL的书来看看......
极帝猫 25-11-2008 09:08 AM
[quote]原帖由 [i]系统[/i] 于 19-10-2007 08:50 PM 发表 [url=http://www.e-dyn.org/forum/redirect.php?goto=findpost&pid=446378&ptid=30437][img]http://www.e-dyn.org/forum/images/common/back.gif[/img][/url].zz8gZP(g
_(cB!I?
M2o)@(Zhj.[1}
這樣如果在那個 tbl table 連續2 value以上是已經不在了
4C9?2DS@.uslnP5v
用subquery 還選的出麼?
'JsY'D5v{
:ZHU334: :ZHU334: [/quote]"M,Ba)G
m!w6JZ
} U*bA,k$H$b
去年的主题,我现在才看回来。。= =+
`$z
a#R E9[hy
嗯,你说的也对~~
2z'c za
f8P
超过一个以上不在的连续 value,用 subquery 就找不出了~:BEAN443: :BEAN443: