【发布时间】:2023-03-28 01:03:02
【问题描述】:
我使用数据库表中的连接进行了选择,结果我的记录具有重复的 ID。对于排名记录(分页目的),我在 PostgreSQL 中使用了 dense_rank() over ()。 问题是:如何按特定列值及其来自另一列的适当值对结果进行排序?
SELECT *
FROM
(SELECT crm_leads.id,
f.name,
fv.value,
dense_rank() OVER (ORDER BY crm_leads.id) AS offset_
FROM crm_leads
INNER JOIN crm_modules AS m ON crm_leads.module_id = m.id
INNER JOIN crm_fields AS f ON f.module_id = m.id
LEFT JOIN crm_field_values AS fv ON fv.lead_id = crm_leads.id
AND fv.field_id = f.id
LEFT JOIN crm_field_type_values AS ftv ON ftv.field_id = f.id
WHERE crm_leads.domain_uuid = '6191af69-9cb5-44f7-b455-3eae6f81d01d'
AND m.id = 41 )
AS result_offset
选择后我有什么:
| ID | NAME | VALUE |
| 3 | name1 | 13 |
| 3 | name2 | 23 |
| 3 | name3 | 44 |
| 4 | name2 | 55 |
| 4 | name1 | 12 |
| 5 | name2 | 89 |
| 5 | name1 | 14 |
例如,我想按 NAME 排序:name1 值及其适当的值。排序后的期望(值:12、13、14):
| ID | NAME | VALUE |
| 4 | name2 | 55 |
| 4 | name1 | 12 |
| 3 | name1 | 13 |
| 3 | name2 | 23 |
| 3 | name3 | 44 |
| 5 | name2 | 89 |
| 5 | name1 | 14 |
【问题讨论】:
标签: sql postgresql sql-order-by