【问题标题】:How can select different records from a list with duplicated values?如何从具有重复值的列表中选择不同的记录?
【发布时间】:2021-10-24 05:50:42
【问题描述】:

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

所以,让我给你一张照片。我有一张普通的桌子,我们称之为“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 c1 in ('1','2','2') 是WHERE ( c1 = '1' OR c1 = '2' OR c1 = '2' ) 的语法简写,在语义上与WHERE ( c1 = '1' OR c1 = '2' ) 相同。
  • 感谢您的解释!

标签: sql oracle select


【解决方案1】:

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

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

如果您想“倍增”行数,则需要将join 与具有重复值的派生表一起使用。

【讨论】:

  • 感谢您的指点!现在很清楚我必须在逻辑中做什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 2023-01-09
  • 1970-01-01
相关资源
最近更新 更多