Sql 如何仅选择最大食品订单id?

Sql 如何仅选择最大食品订单id?,sql,postgresql,join,max,inner-join,Sql,Postgresql,Join,Max,Inner Join,如何仅选择最大食品订单id SELECT o.food_order_id, fo.user_id, f.name, f.price, o.quantity, o.subtotal FROM food_order fo INNER JOIN order_item o ON fo.food_order_id = o.food_order_id INNER JOIN food_item f ON o.food_id = f.food_id WHERE f

如何仅选择最大食品订单id

SELECT
    o.food_order_id,
    fo.user_id,
    f.name,
    f.price,
    o.quantity,
    o.subtotal
FROM food_order fo
INNER JOIN order_item o ON fo.food_order_id = o.food_order_id
INNER JOIN food_item f ON o.food_id = f.food_id
WHERE fo.user_id = 12;
如果我想更新或删除从表中选择的信息,我将如何做

表:

CREATE TABLE food_item (
    food_id SERIAL PRIMARY KEY,
    name TEXT,
    image TEXT,
    description TEXT,
    price INT
);

在Postgres 13中,您可以使用带领带的
先取:

SELECT o.food_order_id, fo.user_id, f.name, f.price, o.quantity, o.subtotal
FROM food_order fo JOIN
     order_item o
     ON fo.food_order_id = o.food_order_id JOIN
     food_item f 
     ON o.food_id = f.food_id
WHERE fo.user_id = 12
ORDER BY o.food_order_id DESC
FETCH FIRST 1 ROW WITH TIES;
在旧版本中,我建议:

SELECT *
FROM (SELECT o.food_order_id, fo.user_id, f.name, f.price, o.quantity, o.subtotal,
             RANK() OVER (ORDER BY o.food_order_id DESC) as seqnum
      FROM food_order fo JOIN
           order_item o
           ON fo.food_order_id = o.food_order_id JOIN
           food_item f 
           ON o.food_id = f.food_id
      WHERE fo.user_id = 12
     ) x
WHERE seqnum = 1;
SELECT o.food_order_id, fo.user_id, f.name, f.price, o.quantity, o.subtotal
FROM food_order fo JOIN
     order_item o
     ON fo.food_order_id = o.food_order_id JOIN
     food_item f 
     ON o.food_id = f.food_id
WHERE fo.user_id = 12
ORDER BY o.food_order_id DESC
FETCH FIRST 1 ROW WITH TIES;
SELECT *
FROM (SELECT o.food_order_id, fo.user_id, f.name, f.price, o.quantity, o.subtotal,
             RANK() OVER (ORDER BY o.food_order_id DESC) as seqnum
      FROM food_order fo JOIN
           order_item o
           ON fo.food_order_id = o.food_order_id JOIN
           food_item f 
           ON o.food_id = f.food_id
      WHERE fo.user_id = 12
     ) x
WHERE seqnum = 1;