好的,我有两张桌子:
OrderTable (orderID is unique) orderID - Date ..... 1 - 11/12 .... 2 - 12/12 .... .... OrderStage (each orderID has many stages) orderID - Stage 1 - 1 1 - 3 2 - 2 2 - 4 ....
现在我希望获得max(stage)= 3
的所有订单select orderID,... From orderTable where exists
(select orderID, MAX(stage) from OrderStage group by orderID Having MAX(stage)=3 )
以上查询有效,但我不知道如何将Max阶段从OrderStage
表中删除,以便结果如下:
orderID - Date ..... - MaxStage 1 - 11/12 .... - 3
这就是我的尝试:
select orderID,..., st.maxStage From orderTable where
exists (select orderID, MAX(stage) maxStage from OrderStage
group by orderID Having MAX(stage)=3 ) st
但是MYSQL显示错误。
那么如何解决这个问题呢。
注意:我不能使用JOIN cos我在现有的sql上构建这个查询非常复杂,如果我改为JOIN然后我可能会破坏代码。
答案 0 :(得分:1)
如果要使用值
,则需要使用join
select ot.orderID,..., omax.maxStage
From orderTable ot inner join
(select orderID, MAX(stage) as maxStage
from OrderStage
group by orderID
Having MAX(stage)=3
) omax
on ot.orderId = omax.orderId;
inner join
执行过滤,由于group by orderId
,您不必担心结果集中无意中重复的行。