我在 mysql 中有两个表: 订单(id,订单名称) Order_item(id,零件名称,价格,order_id)
订单项中的order_id是订单表的外键。
如何选择order_item价格总和最高的订单?
你能告诉我如何在oracle和mysql中做到这一点吗?
我尝试用这个查询来做到这一点:
SELECT ord.* FROM ORDERS ord WHERE ID = (Select o.id from ORDERS o
inner join order_item oi on o.id =oi.order_id
group by oi.id,ord.orderName
order by sum(oi.price) desc limit 1)
但它选择了 order_item.price 价格最高的订单。
;
注意 select top 1 在 mysql 中是无效的语句。
这是正确的解决方案吗?:
SELECT ord.* FROM ORDERS ord WHERE ID = ( Select o.id from ORDERS o
inner join order_item oi on o.id =oi.order_id group by o.id order by sum(oi.price) desc limit 1);
至少在Mysql服务器上它运行。如何重写这个以正确的 Oracle sql 语句?
在甲骨文中:
SELECT o.id,
MAX(o.ordername) AS ordername
FROM Order o
INNER JOIN Order_item oi
ON (o.id = oi.order_id)
GROUP BY o.id
ORDER BY SUM(oi.price) DESC
FETCH FIRST ROW ONLY;
在 MySQL 中:
SELECT o.id,
MAX(o.ordername) AS ordername
FROM Order o
INNER JOIN Order_item oi
ON (o.id = oi.order_id)
GROUP BY o.id
ORDER BY SUM(oi.price) DESC
LIMIT 1;