mysql - MySQL - 根据条件获取每个成员的最后一条记录
问题描述
我需要一些帮助来查询:
Table Customers
id name email
1 john john@abc.com
2 doe doe@abc.com
Table Membership
id facility package
1 a x
2 b y
3 c z
Table Orders
id orderid result customerid membershipid
1 order-1 Unsuccessful 1 1
2 order-2 Successful 2 1
3 order-3 Successful 1 1
4 order-4 Successful 1 2
5 order-5 Unsuccessful 1 2
我想要实现的是获得最后一个订单,该订单对每个会员资格的客户都不成功
这意味着在这种情况下查询应该只返回 order-5。因为membershipid 1的最后一条记录是成功的。
到目前为止,我已经使用了这个查询,但它返回最大的不成功记录并且不遵守最后一条记录。
我希望我已经解释了我的问题。
这是查询
SELECT o.transactionresult FROM orders o where o.transactionresult='Unsuccessful' group by o.membershipid ORDER by o.id DESC
解决方案
如果最后你的意思是最后一个 id 那么你可以使用 NOT EXISTS:
SELECT o.*
FROM orders o
where o.transactionresult='Unsuccessful'
and not exists (
select 1 from orders
where membershipid = o.membershipid and id > o.id
)
请参阅演示。
如果您想要每个客户的会员资格:
SELECT o.*
FROM orders o
where o.transactionresult='Unsuccessful'
and not exists (
select 1 from orders
where membershipid = o.membershipid and customerid = o.customerid and id > o.id
)
请参阅演示。
结果:
| id | orderid | transactionresult | customerid | membershipid |
| --- | ------- | ----------------- | ---------- | ------------ |
| 5 | order-5 | Unsuccessful | 1 | 2 |
推荐阅读
- macos - 如何签署 shell 脚本以在 Mac OSX 上运行?
- sentry - Cloudflare Workers 的性能日志记录
- networking - IP 地址信息如何从 TCP 层传播到 IP 层?
- flutter - Flutter:FlutterWindowManager.FLAG_SECURE 在 ios 上不起作用
- jira-plugin - 无法在 Jira 云应用中安装“Azure Pipelines for Jira”插件
- blogger - Blogger 格式运算符日期时区
- wordpress - Amazon S3 和 M3u8 以及 ts 文件
- canvas - react-konva 使用鼠标单击自由手区域选择(直线)
- python - 无法在 PyCharm 中安装收缩、pycontractions 包
- javascript - OnFocus 事件未触发 React Final Form 中的自定义组件