将表中的两行合并为一行

Noé*_*ieu 2 postgresql join

我认为这很简单,但我无法解决这个问题……我有一张contactsFields这样的桌子:

| id | contactId | fieldType | order | value |
Run Code Online (Sandbox Code Playgroud)

我想获得emailorder0和companyorder0为好。

获得任何一个都非常简单:

SELECT "contactId", "value"
FROM "contactFields"
WHERE "order" = 0 AND "fieldType" = '<email OR company>';
Run Code Online (Sandbox Code Playgroud)

此查询不能返回任何行或单个行,因为我们强制要求永远不会有 2 个字段具有相同的fieldTypecontactId并且order

但我想同时获得它们(即在一行中合并 2 个结果),如下所示:

| contactId | emailWithOrder0 | companyWithOrder0 |
Run Code Online (Sandbox Code Playgroud)

我可以通过加入来做到这一点吗?

ype*_*eᵀᴹ 7

@a_horse_with-no_name 的查询改进了:

SELECT "contactId", 
        email, 
        company
FROM 
    ( SELECT "contactId", "value" AS email
      FROM "contactFields"
      WHERE "fieldType" = 'email'
        AND "order" = 0
    ) AS e
  FULL JOIN 
    ( SELECT "contactId", "value" AS company
      FROM "contactFields"
      WHERE "fieldType" = 'company'
        AND "order" = 0
    ) AS c 
  USING ("contactId") ;
Run Code Online (Sandbox Code Playgroud)