我有一个带有ordernumber的表调用订单和另一个带有ordernumber和产品编号的表调用order_detail。
我试图查询:
Select a.* from orders as a
join
order_detail as b on a.ordernum = b.ordernum
where b.prodnum ='Bike28B' or b.prodnum = 'ridinggloves'
group by ordernum;
它会给出具有Bike28B的订单的结果,但不会给订单带有两个属性的结果。
答案 0 :(得分:0)
你无意中偶然发现了mysql的古怪分组实现,它实现了非标准的东西。尝试列出
中的所有列select a.*
from orders as a
join order_detail as b
on a.ordernum = b.ordernum
and b.prodnum in ('Bike28B', 'ridinggloves')
group by <list every column in order>
having count(*) = 2
having子句确保找到两个子行。
另请注意使用in (...)
代替or
,如果在该列上使用索引(如果存在),则会有更好的机会。我也将这个条件移到了join子句中,因为它是一个连接条件(虽然它可以在两个地方都有效)。