台灣最大程式設計社群網站
線上人數
1762
 
會員總數:241132
討論主題:186802
歡迎您免費加入會員
討論區列表 >> MySQL >> 關於Group by的問題
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
關於Group by的問題
價值 : 50 QP  點閱數:142 回應數:5

樓主

Steven HO
初學者
80 7
192 26
發送站內信

關於Group by的問題


我有一個表格

序號  位置  種類
1    1    E
2    1    Q
3    1    C
4    1    W
5    3    E
6    3    Q
7    3    C
8    3    W

假設種類ABCDE視為同一種類

希望能弄出下列表格

序號  位置  種類
1    1    E
2    1    Q

4    1    W
5    3    E
6    3    Q

8    3    W

種類C因為跟種類E屬於同一群組,所以被刪除

我有試過Group 種類,序號,出現的是原始表格

故上網請高手解答之~~謝謝

搜尋相關Tags的文章: [ Group by ] ,
本篇文章發表於2017-10-26 15:55
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
你搞錯了GROUP的用意了。GROUP的用意是依照欄位為集中依據的條件做統計

我相信你的「序號」一定是唯一值。

一般來說~~~沒人會將唯一值做group。因為根本沒意義。一定會全部的資料

正常會用group的用意,大多是為了要配合count、sum、max....等這些統合值使用。

基本上,你的要求比較難直接利用sql語法做到。
也並不是不能做到。而是需要2個以上的子查尋才有可能可以處理。
但這樣子會造成資料庫的負載過大。
反而利用一下程式會比較快處理

我這堣]大約將sql碼給你試試。

本篇文章回覆於2017-10-27 11:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
忘了先說明一下了。
在where內有一個子查尋的方式,其目的是依照「序號」做排序。並將你說的ABCDE值就屬於同一組的情況下。
所以我先將其全化成同一個參數做「ABCDE」,方便判斷。
然後再取第一個值為需要保留的值。

這樣在搜尋上,它會先找出第一個屬於ABCDE群組的值是「E」。這樣就會自動將不是「E」的排除掉,
再將不屬於ABCDE的值也抓出來。

這樣就可以達到你的目的了。
本篇文章回覆於2017-10-27 11:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

Steven HO
檢舉此回應
感謝版大

我想問,這串SQL字串是因為子查詢所以號資源嗎??改成join會比較好一點嗎??

前人寫SQL字串很愛賣弄技巧,一個查詢可以join四五個Table

先謝謝您搂
本篇文章回覆於2017-10-30 10:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

Steven HO
檢舉此回應
另外補上

前人是寫Group by 種類 , 時間

可能是希望查詢值是在同時間下能排除相同種類的發生

這樣算是鑽漏洞?還是?
本篇文章回覆於2017-10-30 10:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
我一項一項回答好了

1.這串SQL字串是因為子查詢所以號資源嗎??改成join會比較好一點嗎??
這其實我不能說對,也不能說錯。
一般來說,像這樣的情況我會比較偏向做兩次然後用程式來替代後面那個子查的值。
上面的做法的確就如你所說的,因為用子查詢的關係,會比較耗資源。
但某些特別的情況下。如無程式補助的情況。也不得已很要用這樣的處理方式。
當然用join的方式是會好一點。只是我那段的目的是為了要查出目前第一個時間的abcde是誰。
join並無法辦到這一點。

2.前人寫SQL字串很愛賣弄技巧,一個查詢可以join四五個Table
其實~~~~我也會join好幾個表的。
比較大型的專案,join5個以上的表都是有可能的。光購物程式來說。
一項產品,就得要join 用戶、訂單、分類、圖片、購物記錄....
所以說join多並非是愛賣弄技巧。那是一種設計上的規劃。

3.前人是寫Group by 種類 , 時間
可能是希望查詢值是在同時間下能排除相同種類的發生
這樣算是鑽漏洞?還是?

其實另外一種寫法是用join的方式。但需要有時間才行。
這算是另外一種寫法了。但因為你的條件內並沒有給我時間。所以我並未往那邊去想。
本篇文章回覆於2017-10-30 17:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.