仅选择不重复的行

时间:2014-07-18 15:52:28

标签: oracle

所以我有一张这样的桌子。这是标准订单表头 - 订单明细表:

       order id   order_line
      ----------- ----------- 
         100          1       
         100          2
         100          3
         101          1
         102          1
         103          1
         103          2
         104          1
         105          1

现在,我如何制作一个仅选择只有一行的订单的SELECT? 在这种情况下,我不想要订单100和103。

谢谢! 蒂亚戈

3 个答案:

答案 0 :(得分:0)

order_id分组,只接受每组有1条记录的

select order_id 
from orders
group by order_id
having count(*) = 1

如果您需要完整记录,请执行

select t1.* 
from orders t1
join
(
    select order_id 
    from orders
    group by order_id
    having count(*) = 1
) t2 on t1.order_id = t2.order_id

答案 1 :(得分:0)

您也可以尝试以下查询:

select order_id , order_line 
from Order_Detail 
group by order_id ,order_line 
having count(order_id)<2;

答案 2 :(得分:0)

使用&#34;按order_id&#34;分组计数行是一个很好的解决方案,但不需要计数,更简单的Max函数工作正常:

select order_id from orders 
    group by order_id 
        having max(order_line)=1;

如果order_line进一步具有连续值&#34;优化&#34;是可能的:

select order_id from orders
    where order_line <= 2 
    group by order_id 
        having max(order_line)=1;