【问题标题】:Union two tables with a table _name column用表名列合并两个表
【发布时间】:2017-04-25 09:05:26
【问题描述】:

我想合并两个表(Student1,Student2)。

1 - 学生1

| student_code |  name   |  
--------------------------
| 1            |  katia  |   
| 2            |  roger  |   
| 3            |  ken    | 

2 - 学生2

| student_code |  name   |  
--------------------------
| 3            |  katia  |   
| 4            |  roger  |   
| 5            |  ken    | 

那么我想得到这样的结果。

结果

|table_name| student_code |  name   |  
-------------------------------------
|Student1  | 1            |  katia  |   
|Student1  | 2            |  roger  |   
|Student1  | 3            |  ken    | 
|Student2  | 3            |  katia  |   
|Student2  | 4            |  roger  |   
|Student2  | 5            |  ken    | 

我只想使用 ANSI sql。

【问题讨论】:

    标签: sql ansi-sql


    【解决方案1】:

    你可以使用

    SELECT 'Student1' AS table_name, student_code, name FROM Student1
    UNION ALL
    SELECT 'Student2' AS table_name, student_code, name FROM Student2
    

    【讨论】:

      【解决方案2】:
       select 'Student1' AS table_name,student_code,name from student1
       union
       select 'Student2' AS table_name,student_code,name from student2
      

      我假设您知道UNIONUNION ALL 之间的区别,union 带来唯一记录,它与UNION PERFORMED ON SETS 相同,而union all 也会带来重复行。

      在您的情况下,即使使用联合,它也会带来重复,因为第一列区分了行。

      【讨论】:

      • 谢谢!这很有帮助。
      【解决方案3】:
      Use UNION ALL statement :
      
      SELECT 'Student1' as table_name, student_code, name FROM Student1
      UNION ALL 
      SELECT 'Student2' as table_name, student_code, name FROM Student2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-23
        • 1970-01-01
        • 2014-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-18
        相关资源
        最近更新 更多