当前位置: 首页 > 面试题库 >

ORACLE Select Distinct返回许多列,其中

邓鸿信
2023-03-14
问题内容

我有一张桌子,看起来像这样:

NAME    Col1     Col2    Col3
Tim     1        2       3
Tim     1        1       2
Tim     2        1       2
Dan     1        2       3
Dan     2        2       1
Dan     2        1       3

我试图做一个SELECT命令,结果是这样的:

NAME    Col1     Col2    Col3
Tim     2        1       2
Dan     2        2       1

因此,我需要唯一的名称,但选择所有四个列,其中Col1
=2。我在这里使用解决方案来使唯一的部分正常工作: SQL / mysql-
选择唯一/唯一,但返回所有列?

但是,当我Col1 = '2'向select语句的WHERE部分添加add时,它不会返回Col1为2的所有名称,因为我认为它首先查找的是一个不同的数字,而不是1,因此需要该结果。

希望我有道理,有人可以帮助。很难解释,并想出一个好标题。谢谢!


问题答案:

据我了解,此查询应该可以解决您的问题:

select distinct a.* from temp_ids a join

(select name, max(col1 || ' ' || col2  || ' ' || col3) id
from temp_ids
where col1 = 2
group by name
) b

on (a.name = b.name and (col1 || ' ' || col2  || ' ' || col3) = b.id)
;

当然,最好使用唯一记录ID代替串联,但是可以生成ID。确保id的函数为每个列组合返回唯一值(在这种情况下使用(col1 ||’‘|| col2 ||’‘||
col3))



 类似资料:
  • 问题内容: 我正在尝试编写一个查询,该查询从GPSReport表返回每个唯一设备的最新GPS位置。表中有50个设备,所以我只希望返回50行。 这是我到目前为止(无法正常工作) 这将返回50行,但不会为每个device_serial返回唯一的行。它返回第一个设备的所有报告,然后返回第二个设备的所有报告,依此类推。 我要在一个查询中执行的操作是否可行? 问题答案:

  • 问题内容: 我想知道是否可以在SQL Server中运行一个命令/存储的程序,该程序将为我提供包含表中给定数据的列的名称。 因此,如果我要查询,请给我该表中所有包含值75的列。我不希望该行。只是表中的列名…这可能吗? 问题答案: 当您对输出感到满意时,请取消注释。 因此,让我们考虑一个简单的表: 现在,基于上述代码的存储过程: 用法示例: 输出:

  • 问题内容: 我有一个熊猫DataFrame ,。它包含一列“大小”,以字节为单位表示大小。我已经使用以下代码计算了KB,MB和GB: 我已经运行了超过120,000行,并且根据%timeit,每列花费的时间约为2.97秒* 3 =〜9秒。 无论如何,我可以使它更快吗?例如,我是否可以代替一次套用并运行3次而不是一次返回一列,而是可以一次通过返回所有三列以将其插入回原始数据帧吗? 我发现的其他问题都

  • 我使用的是sparkSql 1.6.2(Java API),我必须处理下面的DataFrame,其中包含两列中的值列表: 所需的表为: 我想我必须使用爆炸函数和自定义UDF函数的组合。 null register(“combineUDF”,combineUDF,retSchema); 任何帮助都将非常感谢。 更新:我试图首先实现zip(AttributeName,AttributeValue),所

  • 下面是一个提供两列结果的函数。 在这个函数中,有一个用于返回结果。 功能: 有没有可能不使用循环就返回行? 如果是这样的话,请与我分享我们如何做到这一点。 我是否能够编写一个函数,在不使用循环的情况下将记录插入到表中? 帮我解决这个问题。 提前谢谢。

  • 问题内容: 我想做这样的事情: 不幸的是,列表追加未返回修改后的列表。 那么,我如何允许返回新列表? 问题答案: 不要使用追加而是串联: 这将返回一个 新 列表。不会受到影响。如果你需要有受影响的 还有 既可以使用,无论如何,然后分配分开(复印件)。