培訓班上學員的一個SQL問題

lawzjf發表於2006-07-10

UT小靈通計費資料庫中的一個問題,簡化一下可以這樣描述:

兩個表t1,t2,其結構如下:

SQL> desc t1
Name Null? Type
----------------------------------------- -------- ----------------
X NUMBER(38)
Y VARCHAR2(20)
Z NUMBER(38)
W NUMBER(38)

SQL> desc t2
Name Null? Type
----------------------------------------- -------- ----------------
X NUMBER(38)
B VARCHAR2(13)
C NUMBER(38)

要求更新t1表中的記錄,使得z=0.13*w,記錄所滿足的條件如下:記錄的x欄位的值在t2表中存在,並且這條記錄的y欄位的前13個字元等於t2表的相應記錄的b欄位值。唉,感覺問題描述的很糟糕,怎麼表達能力這麼差。

答案如下:

SQL> update t1 set z=w*0.13
2 where substr(y,1,13) in (select b from t2 where t2.x=t1.x)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/37724/viewspace-152549/,如需轉載,請註明出處,否則將追究法律責任。

相關文章