首页 > 解决方案 > 查询未返回正确的数据

问题描述

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_typeof1payment_typeof 0from的 s Payment_Table

目的是发现他们已经支付了两种付款,对于那些已经支付了两种的人,他们必须有payment_statusof 2,但如果例如,如果user_idis1company_idis 103,则输出必须是100+200+600=900

这个用户company_idpayment_Type 01并且对于这两个条件(payment_type=1 and payment_type=0)已经成功完成了他们payment_Status2即使之前支付失败

例如payment_detail_id1001有的。payment_status_1

标签: mysql

解决方案


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
   )

推荐阅读