作者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
1F:推 tactical:个人也觉得不需要用到join,按字面上的意思只要找到每类 10/13 16:00
2F:推 tactical:找到最初始的那个值,用这篇的方式就绰绰有余了 10/13 16:05