Oracle 选择具有相同列值的行

Oracle 选择具有相同列值的行,oracle,group-by,Oracle,Group By,我正在尝试为以下场景生成一个查询 如果我的桌子是 signature | id | operation abc | 1 | 1234 xyz | 1 | 1234 pqr | 2 | 1234 那么我的输出应该是 signature | id abc | 1 xyz | 1 i、 e.在特定列中具有相同值的行 我形成了这样的疑问 select signature,id

我正在尝试为以下场景生成一个查询

如果我的桌子是

signature |   id  | operation

abc       |    1  |   1234 

xyz       |    1  |    1234

pqr       |    2  |    1234
那么我的输出应该是

signature |  id

abc       |  1

xyz       |  1
i、 e.在特定列中具有相同值的行

我形成了这样的疑问

select signature,id 
from tablename 
where operation = '1234' 
group by signature,id 
having count(*) >0;
但这也返回了所有内容,包括xyz | 1

有人能给我推荐正确的查询吗?

试试这个:

SELECT signature,COUNT(id) FROM table_name WHERE operation = '1234' GROUP BY id;

我还没有对此进行测试,它可能过于复杂,但我认为这会起作用:

选择Signature,ID from tablename,其中ID在SELECT ID from SELECT ID中,按NumRecords>1的ID将*作为NumRecords from tablename GROUP

SELECT signature,COUNT(id) FROM table_name WHERE operation = '1234' GROUP BY id;
我们需要在ID列上应用分区,如下所示

选择结果。[签名],Result.ID, 行数按Result.ID超额分配按Result.ID排序为[RowNum] 结果 从表_中选择名称作为结果 按结果分组。[签名],Result.ID

选择结果。[签名],Result.ID 从临时结果作为结果 where Result.[RowNum]=1

您可以使用where exists作为分组依据的替代方法


为什么签名有group by?你能准确地解释一下你想要什么吗?我尝试过没有group by的签名,但它给了我以下错误ORA-00979:不是group by表达式解释你想要什么..我想要的签名是operation='1234'和相同的ID。你知道它在oracle中不是有效的group by表达式吗?它是在oracle中无效。错误:ORA-90079:不是一组表达式,如何考虑同一列值的条件?它仍然无效。在oracle中,您需要在GroupBy中添加签名和id,这正是困扰我的问题。您需要按签名分组,而不是按id分组。您是真的吗?来吧,伙计们,id是唯一的,它怎么能被分组呢?我为原始的MYSQL标签写了这篇文章——不知道这对Oracle是否有效。这也会返回所有东西。i、 所有3个条目。不确定你得到了什么检查小提琴