作者rongkuo (small kuo)
看板Database
标题Re: [SQL ] 如何找两笔或以上的资料
时间Sat Oct 12 13:42:15 2013
提供 ORACLE 11g 使用 LISTAGG 函数解答,由於查询速度涉及多方面条件,
可以实际实测看看,谢谢。
SELECT TEAM_ID
FROM (
SELECT DISTINCT
B.TEAM_ID
, LISTAGG(B.PERSON_ID,',') WITHIN GROUP(ORDER BY B.PERSON_ID)
OVER(PARTITION BY B.TEAM_ID) LA
FROM B
)
WHERE LA = '1001,1002'
ORDER BY 1;
※ 引述《greencha (greencha)》之铭言:
: 各位大哥大姐好, 小弟有一问题求教
: 假设我在TABLE A, 有以下两笔资料, 假设叫 PERSON_ID
: PERSON_ID PERSON_NAME
: 1001 小明
: 1002 小华
: TABLE B中, 有各分组的资料
: TEAM_ID PERSON_ID
: 1 1000
: 1 1001
: 2 1001 *
: 2 1002 *
: 3 1001
: 3 1002
: 3 1003
: 3 1004
: 很明显的, 我最後想要的结果是
: 只有小明和小华同组的 TEAM_ID是2
: 我想找到这个2, 要如何以比较单纯的方法处理 (in Oracle)
: 单纯的意思也是效能要好, 最好不要有FULL TABLE SCAN这样的概念
: 资料可能会有上百万笔
: 非常谢谢您的指教
: ※ 编辑: greencha 来自: 118.233.149.27 (10/10 18:45)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.255.3.125