仅当两个或多个记录具有相同值时才连接两个表并分组

joining two tables and grouping only if two or more records has same value

我有 2 个表:

manifests
id | customer | paid_order | price | payment_method

paid_orders
id | paid

JOIN paid_orders ON manifests.paid_order = paid_order_id

Let's assume this scenario:
There are 2 same customer but has different payment_method.

customer | paid_order | price | payment_method |  paid  |
    1    |      1     | 200   |        0       |  200   |
    1    |     NULL   | 100   |        1       |  NULL  |
    2    |     NULL   | 150   |        1       |  NULL  |

我只想GROUP BY customer而且PICK只有0payment_method只有 如果有两个相同的客户。

预期结果:

customer | paid_order | price | payment_method |  paid  |
    1    |      1     | 200   |        0       |  200   |
    2    |     NULL   | 150   |        1       |  NULL  |

一种方法是始终 select 来自一个或多个客户记录的记录,其中 payment_method 具有最小值:

SELECT m1.*
FROM manifest m1
INNER JOIN
(
    SELECT customer, MIN(payment_method) AS min_payment_method
    FROM manifest
    GROUP BY customer
) m2
    ON m1.customer = m2.customer AND m1.payment_method = m2.min_payment_method;

这个逻辑应该有效,因为如果 payment_method 为零,那么这条记录将成为目标。否则,将针对一个值记录。