作者icydream (巧虎)
看板Database
标题Re: [SQL ] 同一资料表内之查询
时间Sat Oct 6 10:32:44 2012
※ 引述《dauntless (火车呼噜呼噜)》之铭言:
: 资料表如下:
: 序号 公司 承办人 产品
: 1 甲 a n1
: 2 乙 b n2
: 3 丙 c n3
: 4 乙 d n2
: 5 戊 e n1
: 6 已 u n2
: 若要查询所有不同公司,但却使用相同产品
: 的纪录:如下。
: 1 甲 a n1
: 5 戊 e n1
: 2 乙 b n2
: 6 已
: d n2
: 要如何做呢?
(test为资料表名称)
select b.序号,
b.公司,
b.承办人,
b.产品
from (select 产品
from test
group by 产品
having count(*) > 1) as a
inner join (select t2.序号,
t2.公司,
t2.承办人,
t2.产品,
(select count(*)
from test as t1
where t1.公司 = t2.公司
and t1.序号 <= t2.序号) as idx
from test as t2) as b
on (a.产品 = b.产品 and b.idx = 1)
order by b.产品
说明:
1. 先找出重复出现的产品(子查询 a)
2. 再替公司重新编号(idx),相同公司,序号较小者为1,依此类推(子查询b)
3. 两者做inner join,条件为产品及idx为1(因为重复出现的公司,只要取序号较小
那笔纪录的资讯)
4. 希望可以解决您的问题 ^^;
--
Xuite 板看 icydream 者作
格落部的我 [报情] 题标
2008 00:00:00 1 Jun Tue 间时
───────────────────────────────────────
My Blog ->
http://blog.xuite.net/icydream/feeling
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.25.35.228
※ 编辑: icydream 来自: 114.25.35.228 (10/06 10:33)
1F:推 dauntless:虽然我这新手目前看不懂,不过我会再研究看看 10/06 17:01
2F:→ dauntless:先谢谢大大的热心解答 10/06 17:03