全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:846
推到 Plurk!
推到 Facebook!

關於sql語法的問題

尚未結案
woei
一般會員


發表:6
回覆:8
積分:2
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-20 18:46:50 IP:211.75.xxx.xxx 未訂閱
請問,如果我可以用下列的query取得前100筆資料,但若要取得 第20~100筆資料,要如何下sql呢??? (是否有類似mysql的limit或oracle的rowid可用,還是有什麼方法???) select top 100 * from table1 order by col1
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-22 00:54:11 IP:61.62.xxx.xxx 未訂閱
請先說明你的資料庫種類. 若是 MSSQL 的話, 可以使用這樣變通的方法: 假設 primary key 為 col1 的話, 可以這樣下: select top 81 * from table1 where col1 not in (select top 19 * from table1 order by col2) order by col2 若是配合 temp table 的方法可以這樣下: select top 100 identity(int, 1, 1) as rowid, * into #tmp_table from table1 order by col2 select * from #tmp_table where rowid between 20 and 80 drop table #tmp_table
woei
一般會員


發表:6
回覆:8
積分:2
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-23 09:58:56 IP:211.75.xxx.xxx 未訂閱
sorry,我沒有寫清楚 我的db是MS SQL Server col1,col2都不是primary key select top 100 * from table1 where col1>xxx and col2=xxx order by col3 您所提的第一個方法,由於我的primary為2個欄位組合成的 若用not in要如何下呢 您所提的第二個方法,我想請問一下temp table 要如何使用呢 是直接在table name前加"#"嗎,還是怎麼處理呢???
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-23 10:23:07 IP:203.95.xxx.xxx 未訂閱
OK, 若是兩個欄位組成的 primary key的話, 就不要使用 subquery 的方式(當然也是可以用, 比較不好組 sql command), 可以直接用 temp table 即可, 至於建立 temp table 的方式, 在 mssql 中, 是直接加 # 號就可以了沒錯, 你可以自行試試!
woei
一般會員


發表:6
回覆:8
積分:2
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-23 16:44:31 IP:211.75.xxx.xxx 未訂閱
我試出來了,謝謝您
系統時間:2024-11-23 5:58:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!