如何解決ACCESS中select TOP語句返回全部記錄問題?
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
我一直以為access的sql語句與sql server差不多,當時也使用 select top n在access測試過,都是成功的,但昨天突然發(fā)現(xiàn)access中有個問題:[br] 如果在查詢top語句的后面使用order by,而且order by字段中有重復值的話,那么這個top很可能會失效,[br]會返回所有記錄[br]比如:[br]
[img]http://www.cnblogs.com/images/outliningindicators/none.gif[/img][color=#000000] [/color][color=#0000ff]select[/color][color=#000000] [/color][color=#0000ff]top[/color][color=#000000] [/color][color=#800000][b]5[/b][/color][color=#000000] [/color][color=#0000ff]from[/color][color=#000000] news [/color][color=#0000ff]order[/color][color=#000000] [/color][color=#0000ff]by[/color][color=#000000] createdate[/color] [p]如果createdate中有重復值,那么很有可能會顯示出所有的記錄來,此top功能會失效的[br]但如果createdate中無重復值,那么top功能還是有效的[br][br]因此,在access中使用top功能要注意一下order by的字段是否會有重復值,如果象createdate是"年-月-日 時:分:秒"的,那基本上問題不大的。[br]但為了保險起見,我們也可以采用“加入主鍵”的方式:[br][/p] [img]http://www.cnblogs.com/images/outliningindicators/none.gif[/img][color=#000000] [/color][color=#0000ff]select[/color][color=#000000] [/color][color=#0000ff]top[/color][color=#000000] [/color][color=#800000][b]5[/b][/color][color=#000000] [/color][color=#0000ff]from[/color][color=#000000] news [/color][color=#0000ff]order[/color][color=#000000] [/color][color=#0000ff]by[/color][color=#000000] createdate [/color][color=#0000ff]desc[/color][color=#000000],id [/color][color=#0000ff]desc[/color] [p][br]用主鍵作“不可能重復”的保障就可以防止此問題出現(xiàn)了!![br][br]希望這對某些朋友有用!![br][br]在網(wǎng)上找到一個相關(guān)的解釋:[br][hilitecolor=#c0c0c0]jet sql不是 t-sql語句。[br]jet sql 會返回重復值,也就是說,一個表中如果 order by 的字段都是 0 ,一共有100條記錄,即使你用select top 1 來返回記錄,也同樣返回100條記錄,因為 jet db 無從在這100條記錄里面判斷先后次序,只能返回100條。要解決此問題可以在后面加入一個主鍵字段[/hilitecolor][/p] 該文章在 2012/2/12 1:03:06 編輯過
|
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |