如何添加第一个表中的所有列,并且仅显示第二个表中的所有数据?

How to add all the columns from 1st table and have only all of the data from 2nd table being displayed?

提问人:rxe737 提问时间:11/8/2023 最后编辑:rxe737 更新时间:11/9/2023 访问量:55

问:

我正在创建一个dbt视图,我需要有1个SELECT语句。我有 2 张桌子,A 和 B。我想创建一个表的视图,该视图将如下所示(一个新的表结果):

  • final table 应该具有 A 的表结构,因此只有表 A 的所有列
  • final table 应该只包含表 B 中的所有数据
  • 因此,表 B 中的所有数据都存在,对于没有条目的字段,它将显示 NULL,如下所示

我想在不必使用 CREATE、INSERT 等的情况下只使用 JOINS(如果适用)等来做到这一点。

Table A

id | name | colour | age | height | gender| object
--------------------------------------------------
1. | apple|  red   | null| null   | null  | fruit
--------------------------------------------------
2. | john |  null  | 21  | 186    | male  | person
--------------------------------------------------
3. | jane |  null  | 19  | 162    | female| person
--------------------------------------------------
4. | jude |  null  | 32  | 154    | female| person
--------------------------------------------------
5. | kiwi |  green | null| null   | null  | fruit

Table B

id | name | colour | object | 
------------------------------
1. | apple|  red   | fruit  | 
-----------------------------
2. | kiwi |  green | fruit  |
-----------------------------
3. | berry|  pink  | fruit  |
    

Query:

    SELECT A.*
    FROM A
    JOIN B ON A.id = B.id
    WHERE A.object = "fruit" --> this doesn't make sense

Trying to have something like this . Final Result:

id | name | colour | age | height | gender| object
--------------------------------------------------
1. | apple|  red   | null| null   | null  | fruit
--------------------------------------------------
2. | kiwi |  green | null| null   | null  | fruit
--------------------------------------------------
3. | berry|  pink  | null| null   | null  | fruit

SQL MySQL 联接 合并

评论

0赞 jarlh 11/8/2023
你只是想要 UNION [ALL] 而不是 JOIN 吗?向我们展示一些示例表数据以及预期结果,即一个最小的可重复示例,以澄清。
0赞 rxe737 11/8/2023
嗨,感谢您的评论 - 我添加了一个示例表,希望这会有所帮助。不幸的是,联合不起作用,因为我没有相同数量的列,对吧?
2赞 JNevill 11/8/2023
喜欢?恐怕你的问题不是很清楚。您可以根据需要使查询的结果集看起来,但不能编写一个查询,即“动态查看 TableA 的结构并神奇地使 TableB 的数据适合其中”。正如我在这里所做的那样,您可以创建 NULL 列,使输出看起来像表 A。SELECT id, name, colour, NULL as age, NULL as height, NULL as gender, object FROM b;
0赞 rxe737 11/9/2023
啊,好的,谢谢你。即使两个表中的相同行和列重叠,但表 A 只是有额外的列,因为它还包含其他数据点?
0赞 Timur Shtatland 11/9/2023
@rxe737 JNevill 的评论是您正在寻找的答案吗?

答: 暂无答案