看板 Database 關於我們 聯絡資訊
不懂,應該不用這麼複雜: SELECT category_name, MIN(item_name) FROM items GROUP BY category_name 跟原PO用的 SQL結果是一樣的…?不知有無誤解需求。 不需要 categories這個資料表…除非沒出現過的也要撈出來。 ※ 引述《pkwbim (多采多姿)》之銘言: 這題算是自問自答了, 此題解法給我同事給找出來了 此法用到了 Sub Select SELECT items.* FROM items WHERE (items.name IN (SELECT MIN(items.name) FROM items inner join categories on categories.name = items.category_name GROUP BY categories.name)) ※ 引述《pkwbim (多采多姿)》之銘言: : 小弟在做案子時遇到的情況, : 雖然用了笨方法解決掉了,但是仍覺得應該有更好的手法來解這問題, : 問題是這樣的,有兩張表,一張是存群組資料,一張是存項目資料 : categories items : =============== =========================== : category_name category_name | item_name : =============== =========================== : A A | a1 : B B | b1 : C A | a2 : D C | c1 : =============== B | b2 : C | c2 : C | c3 : ============================ : 現在,我希望只下一個 SQL (使用的是 PostgreSQL 8.1)指令, : 就可以拿到每個群組的一個(也只有一個) item : 如 : ========================== : category_name | item_name : ========================== : A | a1 : B | b1 : C | c1 : ========================== : 我現在的做法是取得群組後,對每個群組再下一個 SQL 指令來取得該群組的 item : 不知道有沒有只要下一個 SQL 句子的做法 -- 政治是高明的騙術 化妝是高明的易容術 有了Photoshop就不用SK II -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.38.129 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.212.131
tactical:個人也覺得不需要用到join,按字面上的意思只要找到每類 10/13 16:00
tactical:找到最初始的那個值,用這篇的方式就綽綽有餘了 10/13 16:05