SQL 更新語句 ( 积分: 100 )

  • 主题发起人 主题发起人 漂流的雲
  • 开始时间 开始时间

漂流的雲

Unregistered / Unconfirmed
GUEST, unregistred user!
表1<br>數值&nbsp;&nbsp;&nbsp;名稱&nbsp;&nbsp;&nbsp;日期<br>2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071101<br>5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071105<br>3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071110&nbsp;&nbsp;&nbsp;<br>15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071105<br>10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071110&nbsp;&nbsp;<br>20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071110&nbsp;&nbsp;<br><br>表2<br>數值&nbsp;&nbsp;&nbsp;名稱&nbsp;&nbsp;&nbsp;日期<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071020<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071104<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071110&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071120&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071106<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071110&nbsp;&nbsp;<br><br>更新表2<br>結果如下<br>表2<br>數值&nbsp;&nbsp;&nbsp;名稱&nbsp;&nbsp;&nbsp;日期<br>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071020<br>2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071104<br>3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071110&nbsp;&nbsp;&nbsp;<br>3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071120&nbsp;&nbsp;<br>15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071106<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20071110&nbsp;<br>就是同一個名稱,表2中的日期跟表1中的日期進行對比,取小於表2日期中最近的一個數值,這裡的數值並不一定是最小的。。
 
update&nbsp;table2&nbsp;<br>set&nbsp;table2.num=(<br>&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;min(num)&nbsp;as&nbsp;num&nbsp;from&nbsp;table1&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;table1.name=table2.name&nbsp;and&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;table1.date&lt;table2.date<br>&nbsp;&nbsp;&nbsp;&nbsp;group&nbsp;by&nbsp;table1.date<br>&nbsp;&nbsp;&nbsp;&nbsp;having&nbsp;table1.date=max(table1.date)<br>&nbsp;&nbsp;&nbsp;&nbsp;)<br>试试看行不行<br>如果不行试试这个<br>update&nbsp;table2&nbsp;<br>set&nbsp;table2.num=(<br>&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;min(num)&nbsp;as&nbsp;num&nbsp;from&nbsp;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;num,date&nbsp;from&nbsp;table1&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;table1.name=table2.name&nbsp;and&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table1.date&lt;table2.date)&nbsp;ta<br>&nbsp;&nbsp;&nbsp;&nbsp;group&nbsp;by&nbsp;ta.date<br>&nbsp;&nbsp;&nbsp;&nbsp;having&nbsp;ta.date=max(ta.date)<br>&nbsp;&nbsp;&nbsp;&nbsp;)<br>我这里没设表,我知道sql&nbsp;server能用,但是access应该不行,
 
update&nbsp;表2&nbsp;<br>&nbsp;set&nbsp;数值=<br>&nbsp;&nbsp;(&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;select&nbsp;top&nbsp;1&nbsp;表1.数值&nbsp;from&nbsp;表1,表2&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;表1.名称=表2.名称&nbsp;and&nbsp;表1.日期&lt;=表2.日期&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;order&nbsp;by&nbsp;表1.日期&nbsp;DESC<br>&nbsp;&nbsp;)
 
謝謝樓上的二位,不過測試後還是不行
 
update&nbsp;t2<br>set&nbsp;数值&nbsp;=&nbsp;(<br>&nbsp;&nbsp;select&nbsp;top&nbsp;1&nbsp;数值&nbsp;from&nbsp;t1&nbsp;a<br>&nbsp;&nbsp;where&nbsp;a.名称&nbsp;=&nbsp;b.名称<br>&nbsp;&nbsp;and&nbsp;a.日期&nbsp;&lt;=&nbsp;b.日期<br>&nbsp;&nbsp;order&nbsp;by&nbsp;日期&nbsp;desc<br>)<br>from&nbsp;t2&nbsp;b
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部