mysql - 查询未返回正确的数据
问题描述
Payment_Detail_Table
payment_detail_id| payment_id | payment_status | total | user_id | company_id
10001 | 10| 1 | 100 1 103
10002 | 11| 2 | 200 1 103
10003 | 12| 2 | 300 2 104
10004 | 13| 1 | 400 2 104
10005 | 14| 0 | 500 1 105
10006 | 15| 2 | 600 1 103
Payment_Table
payment_id| payment_type|
10 | 1 |
11 | 1 |
12 | 1 |
13 | 1 |
14 | 0 |
15 | 0 |
如何获得user_id
具有payment_type
of1
和payment_type
of 0
from的 s Payment_Table
?
目的是发现他们已经支付了两种付款,对于那些已经支付了两种的人,他们必须有payment_status
of 2
,但如果例如,如果user_id
is1
和company_id
is 103
,则输出必须是100+200+600=900
。
这个用户company_id
有payment_Type
0
和1
并且对于这两个条件(payment_type=1 and payment_type=0)
已经成功完成了他们payment_Status
,2
即使之前支付失败
例如payment_detail_id
是1001
有的。payment_status
_1
解决方案
SELECT
DISTINCT user_id
FROM
Payment_Detail_Table D
WHERE
EXISTS(
SELECT
*
FROM
Payment_Table P1
WHERE
P1.payment_id = D.payment_id
AND
P1.payment_type = 1
)
AND
EXISTS(
SELECT
*
FROM
Payment_Table P2
WHERE
P2.payment_id = D.payment_id
AND
P2.payment_type = 0
)
推荐阅读
- c# - 请求/响应将在我不知情/不知情的情况下转换为不同的命名约定
- vue.js - 如何在 vue-electron 应用程序中将 knex 与 sqlite 一起使用
- shell - 如何为 zsh 自动完成设置选项卡?
- ios - “命名颜色在 iOS 11.0 之前不起作用。” 即使部署目标是 >= iOS 11.0
- javascript - 在节点会话中创建访问级别作为函数
- r - 使用 for 循环和 pROC 包计算 R 中的多条 ROC 曲线。在预测变量字段中使用什么变量?
- arrays - 使用带空格数组的命令行
- angular - 如何将文本框与 Angular 中的图像相关联?
- python - 我无法处理正则表达式,我不知道是什么问题
- sql - SQLite - 命名约束语法