如何解决相同列的MYSQL基本条件聚合
我有以下问题,但我不知道如何实现。
我需要根据两个条件+相同的属性进行过滤
获取事件为“paymentFailed”且事件不是“paymentSuccess”的用户
id name event transaction_number
2 John paymentFailed 002
3 John paymentInProcess 003
4 John paymentStucked 004
5 John paymentSuccess 005
6 Jane paymentFailed 006
7 Jane paymentSuccess 007
8 Reese paymentFailed 008
9 Reese paymentFailed 009
10 Reese otherPayment 010
类似这样的(当paymentSuccess不存在时)
SELECT * FROM USERS where event != "paymentSuccess" AND event = "paymentFailed"
结果:
id name event transaction_number
8 Reese paymentFailed 008
和(paymentSuccess 存在时)
SELECT * FROM USERS where event = "paymentSuccess" AND event = "paymentFailed"
结果:
id name event transaction_number
------------------------ Empty table -----------------------
解决方法
使用NOT EXISTS
:
SELECT u1.*
FROM USERS u1
WHERE u1.event = 'paymentFailed'
AND NOT EXISTS (SELECT 1 FROM USERS u2 WHERE u2.name = u1.name AND u2.event = 'paymentSuccess')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。