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个条目。不确定你得到了什么检查小提琴