select 如何从具有重复值的列表中区分不同的记录?

How can select different records from a list with duplicated values?

我是 SQL/Oracle 领域的新人,我想寻求您的帮助。这是一个非常简单的问题,我被困住了。

所以,让我给你一张图片。我有一个常规 table,我们称它为“table1”。 PK 是第一列,“c1”。假设我想做以下 select:

select (1) from table1 where c1 in ('1','2','3')

这会给我

(1)
1 1
2 1
3 1

但是,如果我进行以下 select

select (1) from table1 where c1 in ('1','2','2')

这会给我

(1)
1 1
2 1

我的问题是,为什么第二种情况没有3条记录?我可以修改第二种情况以提供 3 条记录吗,换句话说,我怎样才能防止选择行为像一个“不同的”子句?

我知道这可能是个假问题,所以让我先谢谢大家。

where 子句过滤由 from 子句生成的行。

where 子句中的条件仅指定给定行是否在结果集中。他们没有指定给定行在结果集中的次数。

如果要“乘以”行数,则需要使用 join 和具有重复值的派生 table。