Sql 是否有一种方法可以使用完全外部联接打印两个表中的所有行?
这里有两张桌子。表A和表B我尝试使用外部联接来联接这两个表,以获取两个表中的所有行,这是生成的_表,但由于某种原因,它不起作用。最后的屏幕截图显示了我在运行查询时遇到的错误。我想要结果表中显示的输出 这是我使用的脚本Sql 是否有一种方法可以使用完全外部联接打印两个表中的所有行?,sql,amazon-redshift,Sql,Amazon Redshift,这里有两张桌子。表A和表B我尝试使用外部联接来联接这两个表,以获取两个表中的所有行,这是生成的_表,但由于某种原因,它不起作用。最后的屏幕截图显示了我在运行查询时遇到的错误。我想要结果表中显示的输出 这是我使用的脚本 SELECT table_b.date, table_b.student, table_b.location, table_b.sub_division, table_a.part_time_pay, table
SELECT table_b.date,
table_b.student,
table_b.location,
table_b.sub_division,
table_a.part_time_pay,
table_b.days_worked
FROM table_a
FULL OUTER JOIN table_b
ON table_a.date = table_b.date
AND table_a.student = table_b.student;
它正按照您指定的方式进行操作。使用
coalesce()
组合两个表中的值:
SELECT COALESCE(a.date, b.date) as date,
COALESCE(a.student, b.student) as student,
b.location, b.sub_division,
a.part_time_pay, b.days_worked
FROM table_a a FULL JOIN
table_b b
ON a.date = b.date AND
a.student = b.student;
我不确定您想如何处理位置
,以及细分
。如果他们有不同的价值观呢?我可能认为您希望将它们置于JOIN
条件中,然后:
SELECT COALESCE(a.date, b.date) as date,
COALESCE(a.student, b.student) as student,
COALESCE(a.location, b.location) as location,
COALESCE(a.sub_division, b.sub_division) as sub_division,
a.part_time_pay, b.days_worked
FROM table_a a FULL JOIN
table_b b
ON a.date = b.date AND
a.student = b.student AND
a.location = b.location AND
a.sub_division = b.sub_division;
请描述“它不工作”。另外,您使用的是Postgres还是Redshift?他们是不同的。结果在我看来是正确的。您显示的结果与您的查询不匹配。正如所写的,您的查询将返回最后一行(
Hugo
),前四列中的null
,然后在部分时间支付中返回3000
,在工作日中返回另一行null
。请解决您的问题。@GordonLinoff我已经添加了一个屏幕截图,说明为什么它不起作用。请参考那个。我使用的是amazon红移。这很有效,非常感谢,但是与日期的合并会引发错误,进行类型转换解决了问题。它应该是COALESCE(a.date::TEXT,b.date::TEXT)@murali<代码>合并()
用于日期。听起来两个表中的两列中存在类型不兼容。