Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql并排合并表,没有任何共同点_Sql - Fatal编程技术网

sql并排合并表,没有任何共同点

sql并排合并表,没有任何共同点,sql,Sql,我正在寻找关于如何合并两个没有任何共同点的表的sql答案 So let's say you have these two tables without anything in common: Guys Girls id name id name --- ------ ---- ------ 1 abraham 5 sarah 2 isaak 6 rachel

我正在寻找关于如何合并两个没有任何共同点的表的sql答案

So let's say you have these two tables without anything in common:

Guys                Girls
id    name          id   name
---  ------        ----  ------
1     abraham        5    sarah
2     isaak          6    rachel
3     jacob          7    rebeka
                     8    leah

and you want to merge them side-by-side like this:

Couples

id   name      id   name
---  ------    ---  ------
1    abraham   5    sarah
2    isaak     6    rachel
3    jacob     7    rebeka
               8    leah

How can this be done?

我正在寻找一个关于如何合并两个没有任何共同点的表的sql答案。

假设,在您的示例中,您希望将男孩与女孩匹配,并在记录之间建立某种有意义的关系,这不是双关语的意思

So let's say you have these two tables without anything in common:

Guys                Girls
id    name          id   name
---  ------        ----  ------
1     abraham        5    sarah
2     isaak          6    rachel
3     jacob          7    rebeka
                     8    leah

and you want to merge them side-by-side like this:

Couples

id   name      id   name
---  ------    ---  ------
1    abraham   5    sarah
2    isaak     6    rachel
3    jacob     7    rebeka
               8    leah

How can this be done?
通常,您会使用一个单独的表来表示两者之间的关联关系

这不会给您一个物理表,但可以让您编写一个表示最终结果的SQL查询:

SELECT     Girls.ID AS GirlId, Girls.Name AS GirlName, Guys.ID AS GuyId, Guys.Name AS GuyName
FROM         Couples INNER JOIN
             Girls ON Couples.GirlId = Girls.ID INNER JOIN
             Guys ON Couples.GuyId = Guys.ID
然后可以使用它使用以下语法动态创建表


但是标准规范化规则会说,最好将它们保存在不同的表中,而不是创建临时表,除非出于性能原因不这样做。

您可以通过创建一个键(即行号)并加入其中来实现这一点

大多数SQL语言都支持行数函数。以下是一种使用it的方法:

select gu.id, gu.name, gi.id, gi.name
from (select g.*, row_number() over (order by id) as seqnum
      from guys g
     ) gu full outer join
     (select g.*, row_number() over (order by id) as seqnum
      from girls g
     ) gi
     on gu.seqnum = gi.seqnum;

只是因为我写了它无论如何,一个替代使用CTEs

WITH guys2 AS ( SELECT id,name,ROW_NUMBER() OVER (ORDER BY id) rn FROM guys), 
    girls2 AS ( SELECT id,name,ROW_NUMBER() OVER (ORDER BY id) rn FROM girls)
SELECT  guys2.id guyid,   guys2.name guyname, 
       girls2.id girlid, girls2.name girlname
FROM guys2 FULL OUTER JOIN girls2 ON guys2.rn = girls2.rn
ORDER BY COALESCE(guys2.rn, girls2.rn);

.

我一直都需要它,-使用表格中的输入在Excel中创建模板。这是从一个表中提取的,其中一个表包含我的地区,另一个表包含一年中的季度。结果为每个季度/期间提供了一个地区名称


从TBL_MKTS a,TBL_PERIODS b中选择b.quarter_Quantity,a.mkt_name

我有几个想法,但哪一个是正确的取决于您在这里尝试实现的目标。如果你像这样把它们扔在一起,你就没有什么有用的了。了解背景有助于决定最佳行动方案。关于如何匹配它们,您的头脑中必须有一些逻辑,诀窍是将其放入数据库中。在你的例子中,你是不是把男朋友/女朋友撮合成一对呢?我的问题和大卫·斯特拉顿的礼貌问题是一样的,但更直截了当一点:即使你可以,你为什么要这样做?我支持这个……为什么?好吧,所以这不是最好的例子。我正在连接一个数据库,该数据库在各种孤立表中以每人一船的属性对ERP进行阴影处理。我知道ERP不应该发生这种情况,但这太难了。其中一些属性是查找表中字段的解码,整个过程不必要地复杂。无论如何,由于上述原因,我有8个查询无法加入。一旦我得到结果,我需要把它们作为一个单一的记录带回来。所以,我不想敲db 8次,而是想敲一次。我想这样做是为了用外部源生成的字符串键填充主键字段。我不在乎哪张唱片有哪把钥匙,但我希望所有20000张唱片都有一把钥匙。就像将电子表格的一列粘贴到另一列。这是这个问题的答案还是你提出了新问题?如果你有新问题,那么没有,这将返回表a和表b的笛卡尔乘积。