连接表而不会丢失数据

时间:2021-04-16 18:28:02

标签: sql

我有三张桌子。

第一个表包含我的原始数据,另外两个是“卫星”表。他们三个都有相同的密钥acc_num

原始数据表列:

  • 账户号码
  • 日期
  • 广告系列

卫星 1 列:

  • Sat_id
  • 周六日期
  • 账户号码

Satellite2 列:

  • Sat_id
  • 跟踪日期
  • 账户号码

我想创建一个基于 acc_num 的 SQL,它为我提供了存在于 Satellite1 和 Satellite2 中的所有 acc_num。如果其中一个卫星表中没有数据,那么我应该为空。

例如:

在原始表中,我将有:acc_num = 1,acc_num = 2,acc_num = 3,acc_num = 4

在卫星 1 中,我将获得以下数据:acc_num = 1 和 acc_num = 2

在 Satellite2 中,我将获得以下数据:acc_num = 3 和 acc_num = 4

所以输出将是:

<头>
Acc_num Satellite1.Sat_date Satellite2.Tracking 日期
1 4/16/2020
2 4/16/2021
3 x1
4 x2

希望我清楚

谢谢

2 个答案:

答案 0 :(得分:0)

SELECT
  Raw_table_name.Acc_num,
  Satellite1.Sat_date,
  Satellite2.Tracking_date
FROM
  Raw_table_name
  JOIN Satellite1 ON Raw_table_name.Acc_num = Satillite1.Acc_num
  JOIN Satellite2 ON Satellite2.Acc_num = Satellite1.Acc_num

从上面的语句中,您通过连接匹配列上的子表,从主 raw_data 表中选择输出所需的列

答案 1 :(得分:0)

选择 Raw_table_name.Acc_num, Satellite1.Sat_date, Satellite2.Tracking_date 从 原始表名 LEFT JOIN Satellite1 ON Raw_table_name.Acc_num = Satillite1.Acc_num 左连接 Satellite2 ON Satellite2.Acc_num = Satellite1.Acc_num

相关问题