請教group by 問題 |
尚未結案
|
mirage
初階會員 發表:40 回覆:101 積分:28 註冊:2004-01-05 發送簡訊給我 |
db1資料:
k1 k2 k3 k4 k5
--------------------------------
a01 連強 v8088 500 1000 <=相同 *
a02 連強 v8088 500 1000 <=相同
a03 連強 v8088 600 1000
a04 捷元 v8088 500 1000 <=相同 *
a05 捷元 v8088 500 1000 <=相同
a06 捷元 v8088 600 900
a07 捷元 8210 500 1000 <=相同 *
a08 上捷 v8088 500 1000 <=相同 *
a09 上捷 v8088 600 900
a10 連強 8210 500 1000 <=相同 *
a11 連強 8210 500 900
a12 連強 8210 600 1000
a13 大強 8210 600 1000
…
…
-------------------------------- edit1.text:=’500’
edit2.text:=’1000’
With SQLQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from db1');
SQL.Add('Where k4=' Quotedstr(edit1.text));
SQL.Add('and k5=' Quotedstr(edit2.text));
SQL.Add('group by ?????????');
Open;
end; 請問先進要如何寫,dbgrid 只顯示: a01 連強 v8088 500 1000 <=相同 *
a04 捷元 v8088 500 1000 <=相同 *
a07 捷元 8210 500 1000 <=相同 *
a08 上捷 v8088 500 1000 <=相同 *
a10 連強 8210 500 1000 <=相同 *
共 5 筆資料
|
adonis
高階會員 發表:140 回覆:258 積分:159 註冊:2002-04-15 發送簡訊給我 |
mirage, 您好 group by 是用在挑群組需搭配select的欄位數(function不在此限),所以不應是透過group by 來做,而是distinct吧。還有K1為紀錄的編號應該可以不用去考慮才是。所以,我想應該是要如此下條件才是
select distinct K2, K3, K4, K5 from db1 where K4='500' and K5='1000'distinct是用來顯示不重複的資料,所以若把K1也考慮進來則會不符合你要的需求。這是我的愚見,或許有其他作法也不一定 ^^ 以上提供你參考,希望多少對你有些幫助。 我也正在努力學習中 ^ ^ 發表人 - adonis 於 2004/08/08 16:25:27 發表人 - adonis 於 2004/08/08 16:32:43
------
我也在努力學習中,若有錯謬請見諒。 |
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
|
shinhrn
中階會員 發表:54 回覆:165 積分:83 註冊:2002-06-05 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
Hi, 稍微修正一下 shinhrn 兄的 sql command, 應該這麼下, select min(k1),k2,k3,min(k4),min(k5) from db1
Where k4=500
and k5=1000
group by k2,k3 order by 1 若資料庫支援 sub query 的話, 也可以這樣下, select * from db1 where k1 in (select min(k1) from db1 where k4=500 and k5=1000 group by k2, k3) 發表人 - timhuang 於 2004/08/09 16:05:49
|
mirage
初階會員 發表:40 回覆:101 積分:28 註冊:2004-01-05 發送簡訊給我 |
引言: Hi, 稍微修正一下 shinhrn 兄的 sql command, 應該這麼下, select min(k1),k2,k3,min(k4),min(k5) from db1 Where k4=500 and k5=1000 group by k2,k3 order by 1 若資料庫支援 sub query 的話, 也可以這樣下, select * from db1 where k1 in (select min(k1) from db1 where k4=500 and k5=1000 group by k2, k3) 發表人 - timhuang 於 2004/08/09 16:05:49我是用mysql 4.04 , 實際程式是要比對約120個欄位,主要是 k2 及 k3 要過濾重複的. 請問有沒有更簡潔的寫法? k1 k2 k3 k4 k5 a01 連強 v8088 500 1000 <=相同 * a04 捷元 v8088 500 1000 <=相同 * a07 捷元 8210 500 1000 <=相同 * a08 上捷 v8088 500 1000 <=相同 * a10 連強 8210 500 1000 <=相同 * |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |