2017-04-06 91 views
0

您好我想从选择中获得最后一个值,这可能吗?我已经试过如下:从选择中获得最后一个值

update order set order_total = 
(select last item_cost * order_quantity 
FROM order_stock, order 
WHERE order_stock.menu_item = 
order.menu_item); 

如果我选择* ITEM_COST order_quantity FROM order_stock,为了 WHERE order_stock.menu_item = order.menu_item它将返回2倍的值,我只想得到恢复的最后一项

+0

我没有看到任何'ORDER BY'。 “* last *”是什么意思? –

+0

请提供最小样本数据和预期结果 –

+0

如果我选择item_cost * order_quantity FROM order_stock,order WHERE order_stock.menu_item = order.menu_item它将返回2个值200和400.我需要选择400 – Michael

回答

0

快速谷歌之后,我发现这一点: https://www.w3schools.com/sql/sql_func_last.asp

页提出了不同的SQL版本的多种方法,因为你与Oracle标记你的问题,我会在这里提供一个:

SELECT column_name FROM table_name 
WHERE ROWNUM <=1 
ORDER BY column_name DESC; 
+0

LAST()不是Oracle中的一个函数。另外,where子句在order by子句之前处理。因此,您很可能无法从该查询中获得所需的值。 –

+0

-1,从链接的站点:“注意:LAST()函数仅在MS Access中受支持。”但在Oracle中有一个名为[“last”]的函数(https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions071.htm)。这个例子是无稽之谈,虽然它来自你链接到的网站。 Oracle首先应用select子句,然后对结果集进行排序。所以“排序”没有效果。 – miracle173

+0

这可能是OP准备接受的,但答案本身是错误的和误导的。 – BriteSponge

相关问题