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

請問一個sql語法

尚未結案
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-08 19:40:56 IP:203.70.xxx.xxx 未訂閱
今天假設資料庫有十個人,每個人都有100筆資料,所以總共為1000筆。 但是今天我每個人只要取50筆就好,請問條件值要怎麼設??
a6475
高階會員


發表:67
回覆:230
積分:154
註冊:2002-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-08 22:55:12 IP:61.229.xxx.xxx 未訂閱
引言: 今天假設資料庫有十個人,每個人都有100筆資料,所以總共為1000筆。 但是今天我每個人只要取50筆就好,請問條件值要怎麼設??
請問你是用什麼資料庫? 在mysql 只要加limit SELECT * FROM XXX LIMIT 50 Access好像是top,不是很確定,有點忘了 SELECT TOP 10 * FROM XXX ..-----------βλμε------------..
◎Oo月夜 光明 藍更愁oO◎
藍調月光城v4:http://inping.myweb.hinet.net/ (暫時使用中..) 明日報(藍調.月光):http://mypaper2.ttimes.com.tw/user/a6475
------
月夜 光明 藍更愁
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-08 23:27:27 IP:218.163.xxx.xxx 未訂閱
插花一下:mysql 有 1萬筆...要取該資料表最後五筆.. 什麼方式最快?
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-08 23:41:25 IP:203.70.xxx.xxx 未訂閱
能否告之 ACCESS 跟 MS-SQL  謝謝      
引言:
引言: 今天假設資料庫有十個人,每個人都有100筆資料,所以總共為1000筆。 但是今天我每個人只要取50筆就好,請問條件值要怎麼設??
請問你是用什麼資料庫? 在mysql 只要加limit SELECT * FROM XXX LIMIT 50 Access好像是top,不是很確定,有點忘了 SELECT TOP 10 * FROM XXX ..-----------βλμε------------..
◎Oo月夜 光明 藍更愁oO◎
藍調月光城v4:http://inping.myweb.hinet.net/ (暫時使用中..) 明日報(藍調.月光):http://mypaper2.ttimes.com.tw/user/a6475
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-07-09 01:48:08 IP:218.163.xxx.xxx 未訂閱
SELECT * FROM Persons WHERE LastName BETWEEN 'Hansen' AND 'Pettersen' 或 SELECT * FROM 資料表 WHERE 條件式 發表人 - qoo1234 於 2004/07/09 01:53:50
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-07-09 08:30:53 IP:61.59.xxx.xxx 未訂閱
大大,就是因為條件式不知道怎麼著手丫 @@!!
引言: SELECT * FROM Persons WHERE LastName BETWEEN 'Hansen' AND 'Pettersen' 或 SELECT * FROM 資料表 WHERE 條件式 發表人 - qoo1234 於 2004/07/09 01:53:50
sl@cableplus.com.cn
高階會員


發表:168
回覆:359
積分:130
註冊:2004-03-26

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-07-09 10:07:24 IP:218.80.xxx.xxx 未訂閱
你可以SELECT top50 * FROM XXX 就行了 最后5笔你可以把数据库里重新排序,倒一下,取前5笔SELECT top5 * FROM XXX 就行了
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-07-09 11:43:53 IP:61.30.xxx.xxx 未訂閱
Hi jacosun 您好, 是否有另一個區別欄位, 例如下面的KeyField

Select * from Table a
where a.KeyField in (Select Top 50  b.KeyField from Table b
                   where b.人 = a.人)  
我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-07-09 12:10:58 IP:218.163.xxx.xxx 未訂閱
引言: 最后5?你可以把?据?里重新排序,倒一下,取前5?SELECT top5 * FROM XXX 就行了
mysql 有 1萬筆...要取該資料表最後五筆.. 什麼方式最快?不是ACCESS玩法喔
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-07-09 12:57:48 IP:63.84.xxx.xxx 未訂閱
引言:
引言: 最后5?你可以把?据?里重新排序,倒一下,取前5?SELECT top5 * FROM XXX 就行了
mysql 有 1萬筆...要取該資料表最後五筆.. 什麼方式最快?不是ACCESS玩法喔 < face="Verdana, Arial, Helvetica"> 您好﹗Qoo版大﹕ 試試這樣﹕ select * From TableName Where ID_NO not in (select top 9995 ID_NO from TableName); 參考看看﹗ --------------------------------- 大病初愈﹐調整中﹒﹒﹒ --------------------------------- ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-07-09 14:32:47 IP:61.59.xxx.xxx 未訂閱
大大沒有耶~~~ 我只有一個資料表裡頭記錄著每一筆交易情形耶 這個有解嗎??
引言: Hi jacosun 您好, 是否有另一個區別欄位, 例如下面的KeyField

Select * from Table a
where a.KeyField in (Select Top 50  b.KeyField from Table b
                   where b.人 = a.人)  
我不是高手, 高手是正在銀幕前微笑的人.
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-07-09 15:44:58 IP:63.84.xxx.xxx 未訂閱
您好﹗    尚未試出較有效的方法﹐但有一個蠻原始的方法﹐步驟比較多﹐不知您是否愿意試用﹐方法如下﹕ 分別將每個人的前50筆資料取出﹐加入到一個新的資料表中﹐再Select此新資料表﹐語法如下﹕ 1﹒Select top 50 * into tablename_new from tablename where name='name1' 2﹒Insert into tablename_new select top 50 * from (select * from tablename where name='name2' (分別再加入其它人的前50筆資料)﹒﹒﹒略﹒﹒﹒ Select * from tablename_new 附﹕刪除此資料表的語法如下 Drop table tablename_new 參考看看﹗ ========================= 大病初愈﹐休養調整中... =========================
------
忻晟
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-07-09 16:07:14 IP:61.59.xxx.xxx 未訂閱
親愛的大大,我也是用這種方法做。只是我每找一個人就要重設一次人名。 想希望看有什麼sql的語法能一次就將資料表裡做好分類後取出每個人名前五十筆的資料。 資料表如下 name   a1 j      2 j      3 j      1 .      . .      . k      20 k      1 .      .  假設有兩個人就好,j 十筆資料,k也有十筆。我要用什麼sql 語法 才能一次查出j的前五筆資料,k的前五筆資料呢??(查詢出來共十筆資料)       
引言: 您好﹗ 尚未試出較有效的方法﹐但有一個蠻原始的方法﹐步驟比較多﹐不知您是否愿意試用﹐方法如下﹕ 分別將每個人的前50筆資料取出﹐加入到一個新的資料表中﹐再Select此新資料表﹐語法如下﹕ 1﹒Select top 50 * into tablename_new from tablename where name='name1' 2﹒Insert into tablename_new select top 50 * from (select * from tablename where name='name2' (分別再加入其它人的前50筆資料)﹒﹒﹒略﹒﹒﹒ Select * from tablename_new 附﹕刪除此資料表的語法如下 Drop table tablename_new 參考看看﹗ ========================= 大病初愈﹐休養調整中... =========================
懷舊的人
高階會員


發表:28
回覆:152
積分:141
註冊:2003-01-08

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-07-09 16:27:39 IP:211.78.xxx.xxx 未訂閱
這樣好嗎 SELECT TOP 50 A1,... FROM TABLE WHERE NAME = 'A1' UNION SELECT TOP 50 A2,... FROM TABLE WHERE NAME = 'A2' UNION SELECT TOP 50 A3,... FROM TABLE WHERE NAME = 'A3' .... UNION SELECT TOP 50 A10,... FROM TABLE WHERE NAME = 'A10'
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-07-09 16:39:37 IP:61.59.xxx.xxx 未訂閱
嗯嗯,這個的確是可以 ^^ 但是資料大的話...會掛吧@@!! 我忽然想到,萬一我不知道name的值呢??<==題外話,突然想到。 有沒有辦法不設name值呢??
引言: 這樣好嗎 SELECT TOP 50 A1,... FROM TABLE WHERE NAME = 'A1' UNION SELECT TOP 50 A2,... FROM TABLE WHERE NAME = 'A2' UNION SELECT TOP 50 A3,... FROM TABLE WHERE NAME = 'A3' .... UNION SELECT TOP 50 A10,... FROM TABLE WHERE NAME = 'A10'
發表人 - jacosun 於 2004/07/09 16:48:36
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#16 引用回覆 回覆 發表時間:2004-07-09 16:45:22 IP:210.65.xxx.xxx 未訂閱
Hi jacosun,    以下有個 Oracle 的語法,至於 MS SQL ..... < href="http://delphi.ktop.com.tw/topic.php?topic_id=42524">http://delphi.ktop.com.tw/topic.php?topic_id=42524 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#17 引用回覆 回覆 發表時間:2004-07-09 17:02:53 IP:210.65.xxx.xxx 未訂閱
Hi jacosun,    In MS SQL you can
SELECT  T.*
FROM    TEST T
WHERE   T.ID   T.NAME IN
       (SELECT  TOP 50
                T1.ID   T1.NAME
        FROM    TEST T1
        WHERE   T1.ID = T.ID)
至於紅色字體部分,你可以視需要自行調整 ps : 說句實話,我到現在還是搞不懂,你到底用何種 DataBase 發表人 -
------
Fishman
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#18 引用回覆 回覆 發表時間:2004-07-09 18:06:23 IP:211.74.xxx.xxx 未訂閱
呵呵 目前用ACCESS做實驗丫,後面會在MS-SQL跑吧 ^^
引言: Hi jacosun, In MS SQL you can
SELECT  T.*
FROM    TEST T
WHERE   T.ID   T.NAME IN
       (SELECT  TOP 50
                T1.ID   T1.NAME
        FROM    TEST T1
        WHERE   T1.ID = T.ID)
至於紅色字體部分,你可以視需要自行調整 ps : 說句實話,我到現在還是搞不懂,你到底用何種 DataBase 發表人 - >< face="Verdana, Arial, Helvetica">
qoo1234
版主


發表:256
回覆:1167
積分:659
註冊:2003-02-24

發送簡訊給我
#19 引用回覆 回覆 發表時間:2004-07-10 11:21:20 IP:218.163.xxx.xxx 未訂閱
引言: 您好﹗Qoo版大﹕ 試試這樣﹕ select * From TableName Where ID_NO not in (select top 9995 ID_NO from TableName); 參考看看﹗
--------------------------------- 大病初愈﹐調整中﹒﹒﹒cashxin2002 大大 保重,早日康復! --------------------------------- 謝謝 >
系統時間:2024-09-12 10:17:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!