[英]How to select only last matching result if this is equal to x from mysql table
我的 mysql 数据库中有三个表:
订单表(示例):
orders
id | user_id | price
1 | 10 | 29.99
2 | 20 | 29.99
3 | 30 | 29.99
4 | 40 | 29.99
用户表:
users
id | name | surname
10 | mark | white
20 | john | long
30 | anders | red
40 | john | smith
和 orders_updates 表
orders_updates
id | order_id | status_id | date
1 | 1 | 1 | 03/05/2020
2 | 1 | 2 | 04/05/2020
3 | 2 | 1 | 05/05/2020
4 | 3 | 1 | 06/05/2020
5 | 4 | 1 | 06/05/2020
6 | 4 | 2 | 06/05/2020
我需要的:
new orders
order_id | user_id | name | surname
2 | 20 | john | long
3 | 30 | anders | red
现在,我需要创建“新订单”页面(orders_updates.status_id = 1),我如何才能只获取只有 status_id=1 而不是其他一些 status_id 的订单。
这是我卡住的地方:
SELECT o.*, u.*
FROM orders o, users u, orders_updates ou
WHERE o.user_id = u.id
AND (SELECT MAX(ID) FROM order_updates WHERE order_updates.order_id = o.id)
AND ou.order_id = o.id
谢谢你们。
尝试以下
select
order_id,
user_id,
name,
surname
from orders_updates ou
join orders o
on ou.order_id = o.id
join users u
on u.id = o.user_id
where ou.status_id = 1
order by
order_id
我会 go 与:
select
order_id,
user_id,
name,
surname
from orders_updates ou
join orders o
on ou.order_id = o.id
join users u
on u.id = o.user_id
where ou.status_id = 1
and ou.order_id not in (
select distinct order_id
from orders_updates
where status_id in (2,3)
)
order by
order_id
我在 (2,3) 中放置了一个示例 status_id,但您应该在其中包含您不想考虑的所有其他 status_id。
希望有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.