所以我有一张这样的桌子。这是标准订单表头 - 订单明细表:
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。
谢谢! 蒂亚戈
答案 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;