如何在SQL中没有公共字段的情况下合并来自两个表的数据?

时间:2019-07-06 17:36:18

标签: mysql sql join union

我有2个表-一个表包含多行,第二个表包含一行,是否可以将它们合并在一个表中并包含多行?

我想合并两个没有公共字段的表中的数据。我已经检查过UNION,但MSDN说:-

  

以下是使用UNION组合两个查询的结果集的基本规则:-
  
  * UNION中的每个SELECT语句必须具有相同的列数。
  *这些列还必须具有相似的数据类型。
  *每个SELECT语句中的列也必须具有相同的顺序。

      Table 1                            Table 2

Column1    Column2        Column4    Column5    Column3
-------    -------        -------    -------    -------
A          1                 E          10         a
B          2                                    
C          3                                    
D          4                                    

**EXPECTED OUTPUT:-**

            CONSOLIDATED_Table 3                   
Column1    Column2  Column3    Column4    Column5
-------    -------  -------    -------    -------
A          1         E          10         a
B          2         E          10         a
C          3         E          10         a
D          4         E          10         a

谢谢。

5 个答案:

答案 0 :(得分:0)

您可以添加其他列,例如:

select tid, t_name, null as s_name
from teachers t
union all
select sid, null, s_name
from students s;

答案 1 :(得分:0)

是的,您绝对可以使用INNER JOIN。这是一种从多个表中获取数据的简便方法。您可以使用子查询并以行格式获取数据

答案 2 :(得分:0)

我们使用联接来合并多个表的列,而给定所有具有联合的选择查询中的列类型和列的nber相同,则我们使用联合来联接多个表的行。 由于您要显示所有行,因此我们可以使用联合。 从老师那里选择tid作为id,选择t_name作为名字 全部合并 从学生中选择sid作为id,选择s_name作为名称;

答案 3 :(得分:0)

师生

select * from (
    select 'teacher' as rowtype, tid as id , t_name as name
    from teachers
    union all
    select 'student', sid, s_name
    from students) t
order by name;

答案 4 :(得分:0)

这种方法产生笛卡尔乘积,但是由于表2中只有1行,因此它应该适用于您的特定用例。

select * from table_1, table_2;