作者grence (多想兩分鐘 = =")
看板Database
標題Re: [SQL ] 找出每個群組中的一筆資料
時間Mon Oct 13 00:56:23 2008
不懂,應該不用這麼複雜:
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