多个平台ID分配到电子邮件地址

问题描述 投票:0回答:2

我正面临的有趣问题。我有5个包含用户信息的公司表。我想要做的是一个汇总表,其中包含与5家公司的电子邮件相关联的所有用户ID。

即公司1(身份证,电子邮件),公司2(身份证,电子邮件),公司3(身份证,电子邮件)。

理想情况下,希望表读取(email,c1_id,c2_id,c3_id)。

抓住我的头脑,了解如何获得所有公司身份的不同电子邮件。

sql union amazon-redshift
2个回答
1
投票

要以您希望的形式(电子邮件,c1_id,c2_id,c3_id,...)获取数据,您需要在电子邮件地址的所有表格中执行LEFT JOIN。如果公司表中没有出现电子邮件地址,则需要成为LEFT JOIN。如果您知道情况并非如此,那么您可以使用JOIN

更新,因为在公司1中的其他公司数据库中可能有电子邮件,有必要首先生成电子邮件列表,然后JOIN到公司表:

SELECT e.email, c1.id AS c1_id, c2.id AS c2_id, c3.id AS c3_id, c4.id AS c4_id, c5.id AS c5_id
FROM (SELECT email FROM company1
      UNION
      SELECT email FROM company2
      UNION
      SELECT email FROM company3
      UNION
      SELECT email FROM company4
      UNION
      SELECT email FROM company5
      ) e
LEFT JOIN company1 c1 ON c1.email = e.email
LEFT JOIN company2 c2 ON c2.email = e.email
LEFT JOIN company3 c3 ON c3.email = e.email
LEFT JOIN company4 c4 ON c4.email = e.email
LEFT JOIN company5 c5 ON c5.email = e.email      
ORDER BY e.email

我创造了一个小SQLFiddle Demo


0
投票

GROUP BY使用电子邮件然后只使用STRAGG(company_id)

SELECT email, STRAGG(company_id) FROM table_name GROUP BY email

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.