Sql 如何仅选择最大食品订单id?
如何仅选择最大食品订单idSql 如何仅选择最大食品订单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
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;