一个表中的一条记录显示在另一个表上的所有记录中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个表中的一条记录显示在另一个表上的所有记录中相关的知识,希望对你有一定的参考价值。

我有两张桌子。表A和表B.表A的数据如下:

    +---+---+---+
    | a | b | c |
    +---+---+---+
    | 2 | 1 | 8 |
    | 3 | 6 | 7 |
    | 4 | 5 | 9 |
    +---+---+---+

表B为:

    +----+----+
    | e  | f  |
    +----+----+
    | 11 | 14 |
    +----+----+

我想创建一个SQL查询,它将为我提供一个输出,其中我保留表A中的所有记录,只保留表B中的一个记录,但是来自表B的每列中的那一个记录的值将显示在所有表A中的记录。数据集的结果看起来像这样:

    +---+---+---+----+----+
    | a | b | c | e  | f  |
    +---+---+---+----+----+
    | 2 | 1 | 8 | 11 | 14 |
    | 3 | 6 | 7 | 11 | 14 |
    | 4 | 5 | 9 | 11 | 14 |
    +---+---+---+----+----+

我不确定SQL如何处理在表结果上附加这样的记录。我会假设有一种方法可以从表B中调出这些字段并与表A进行某种联合吗?如果还有其他问题有答案,那么请将此问题标记为已回答。谢谢。

答案

您可以尝试使用交叉连接

select a, b, c, d, f
from A
cross join B
另一答案

根据定义,SQL表是无序的,没有行标识符。您可以使用row_number()创建行标识符,然后将其用于join

select a.a, a.b, a.c, b.e, b.f
from (select a.*, row_number() over (order by a) as seqnum
      from a
     ) a join
     (select b.*, row_number() over (order by e) as seqnum
      from b
     ) b
     on a.seqnum = b.seqnum;

这假定每个表中的第一列定义了排序,如示例数据中所示。

以上是关于一个表中的一条记录显示在另一个表上的所有记录中的主要内容,如果未能解决你的问题,请参考以下文章

将数据添加到主表上的多个记录的链接表中

显示mysql表中的所有记录

基于同一表上的另一个查询过滤记录的 SQL

oracle数据库

从另一个表的多条记录更新一个表中的一条记录。其中一个表的列名是另一个表的字段

MySQL如何复制表中的一条记录并插入