【发布时间】:2018-12-31 19:28:27
【问题描述】:
我正在使用 Oracle 11,并且希望能够在查询中检索多个记录,这将非常方便地为我的代码的下一部分保存。
让我们考虑这个 SQL 语句:
SELECT ID, NAME FROM PEOPLE WHERE NAME IN ('Alice', 'Bob', 'Alice');
它返回这个数据:
| 1 | Alice |
| 2 | Bob |
我真正想做的是取消该列表的唯一性,并按照给定的顺序返回具有重复项的记录。所以上面的语句是:
| 1 | Alice |
| 2 | Bob |
| 1 | Alice |
我很欣赏 Oracle 经过优化以消除这样的重复,我可以在之后重新使用数据,将其保存在存储对象中并按名称检索等。我只是想知道是否有办法做到这一点在数据库本身上。
【问题讨论】:
-
如果你只有这三个名字,你可以做三个不同的选择和一个联合。 Union all 不会删除重复项。
-
@RigertaDemiri 这是一个有趣的解决方案。不幸的是,我需要将其扩展到更多的记录。
-
@BarbarosÖzhan
select distinct仍然返回两条记录。因为行是相同的。 -
使用子查询而不是
IN并设置JOIN。如果您希望输出中有三行,则输入中的某处必须有三行。 -
对不起,你想要重复,好的,为此@RigertaDemiri 的建议很好。
标签: sql oracle select duplicates