选择 Distinct 和 Inner Join 带来重复的值

Fel*_*ont 3 postgresql join query distinct

我在使用内部联接从两个表中获取唯一值时遇到问题。

\n
SELECT distinct cast (opd.order_number as integer), p.payment_id ,\n    pt.transaction_status, \n    opd.installments_number, \n    pt.amount, \n    pt.origin_amount,\n    p.payment_capture_type,\n    opd.brand,\n    pt.created_date, \n    d."name" \nFROM payment p \nINNER JOIN payment_transaction pt ON pt.payment_id = p.payment_id\ninner join "domain" d on d.domain_id = p.domain_id \nINNER JOIN attempted_online_payment_data opd ON p.payment_id = CAST ( opd.order_number AS INTEGER )\nWHERE \np.created_date >= \'2021-11-01\' and status = 1\n
Run Code Online (Sandbox Code Playgroud)\n

这是我正在使用的查询,我想要一个 payment_id\xc2\xb4s 的唯一值列表,但是当我这样做时,由于某种原因它会带来两个相同的 payment_id。

\n

在此输入图像描述

\n

如何为每个 payment_id 获取唯一的行?

\n

Lau*_*lbe 5

DISTINCT将删除重复的结果行,即所有列都相等的行。

如果您只需要每个结果行payment_id,有两种选择:

  • 用于SELECT DISTINCT ON (payment_id)仅返回每个 的第一行payment_id

  • 使用GROUP BY payment_id并汇总每组的结果。

什么是正确的解决方案将取决于您的要求。