oracle搜索使用重复值-如何返回重复结果

edw

我需要从SELECT语句返回值,无论它们是否重复。

例子:

SELECT * FROM PEOPLE_TABLE
WHERE PERSON_ID = 1
AND PERSON_ID = 1;

它显然只返回一个记录,例如

(person_id, name) 
       "1", "Henry"

我希望我的结果能回来

"1", "Henry"
"1", "Henry"

实现此目标的最佳方法是什么?我的实际联接了几个表并使用WHERE IN,然后指定了大约600个值(200个唯一值)。

亚历克斯·普尔

使用WHERE IN将抑制重复。如果您正在执行以下操作:

CREATE TABLE PEOPLE_TABLE (PERSON_ID NUMBER, NAME VARCHAR2(10));
INSERT INTO PEOPLE_TABLE VALUES (1, 'Henry');
INSERT INTO PEOPLE_TABLE VALUES (2, 'George');
INSERT INTO PEOPLE_TABLE VALUES (3, 'Jane');

SELECT PERSON_ID, NAME
FROM PEOPLE_TABLE
WHERE PERSON_ID IN (1, 1, 3);

 PERSON_ID NAME      
---------- ----------
         1 Henry      
         3 Jane       

然后,您可以针对包含相同目标值的表集合进行联接:

SELECT PT.PERSON_ID, PT.NAME
FROM TABLE(SYS.ODCINUMBERLIST(1, 1, 3)) T
JOIN PEOPLE_TABLE PT
ON PT.PERSON_ID = T.COLUMN_VALUE;

 PERSON_ID NAME      
---------- ----------
         1 Henry      
         1 Henry      
         3 Jane       

SQL Fiddle演示(或带有字符串,来自注释)。

如果愿意,可以创建自己的架构级别的表集合类型,并可以这样做,或者使用内置的likeSYS.OCDINUMBERLISTSYS.ODCIVARCHAR2LIST,这取决于您的实际数据类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章