gpt4 book ai didi

sql - 聚合多个 select 语句而不复制数据

转载 作者:行者123 更新时间:2023-11-29 13:23:59 25 4
gpt4 key购买 nike

如何在不复制数据的情况下聚合 2 个选择子句。

例如,假设我有包含从 1 到 10 的数据的 tab_a:

|id|
|1 |
|2 |
|3 |
|. |
|. |
|10|

然后,我想生成 tab_btab_c 的组合,确保结果有 10 行并添加 tab_a 列到结果元组

脚本:

SELECT tab_b.id, tab_c.id, tab_a.id
from tab_b, tab_c, tab_a;

然而,这是为 tab_btab_c 的每个组合从 tab_a 复制数据,我只想添加并且会为每个组合添加tab_b x tab_c 我添加一行 tab_a。

来自 tab_b 的数据示例

|id|
|1 |
|2 |

来自 tab_c 的数据示例

|id|
|1 |
|2 |
|3 |
|4 |
|5 |

我想得到这个输出:

|tab_b.id|tab_c.id|tab_a.id|
|1 |1 |1 |
|2 |1 |2 |
|1 |2 |3 |
|... |... |... |
|2 |5 |10 |

最佳答案

您的问题包含一个未说明的无效假设:表中值的位置(行号)在 SQL 中是有意义的。它不是。在 SQL 中,行没有顺序。所有联接——事实上,一切——都基于值。要连接表,您必须提供 DBMS 应该用来确定哪些行连接在一起的值。

您在尝试加入时得到了提示:from tab_b, tab_c, tab_a。您没有提供任何连接行的基础,这在 SQL 中意味着没有限制:对于此连接,所有行都是“相同的”。它们都匹配,,你得到它们了!

要执行您想要的操作,请重新设计您的表,至少增加一列:用于标识值的键。它可以是一个数字;例如,您的源数据可能是一个数组。更常见的是每个值都有某种名称。

一旦您有了带键的表,我想您会发现连接更容易编写和理解。

关于sql - 聚合多个 select 语句而不复制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37125103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com