【问题标题】:Display 2 tables into 1 gridview将 2 个表格显示到 1 个网格视图中
【发布时间】:2019-03-26 12:12:05
【问题描述】:

我有 2 个表(表 1 和表 2)。

Table1 和 Table2 具有相同的列名,但 Table2 比 Table1 多出一些列。

列名如下:

  • 表 1 [姓名、姓氏、年龄、性别、身高]
  • 表 2 [姓名、姓氏、年龄、性别、出生日期、出生地]

我正在尝试将两个表中的数据放入 1 个网格视图中。

我尝试使用 UNION ALL,但由于列不一样,它会返回错误。

是否可以将所有这些列加入 1 个网格视图并相应地显示数据?

例如:姓名、姓氏、年龄、性别、身高、出生日期、出生地

如果是这样,我的 sql 查询会是什么样子?

PS:我在每个表中有 70 多列,因此单独选择此列是行不通的

【问题讨论】:

  • "...我在每个表中有 70 多列,因此单独选择此选项不会解决..." -- 截至 2019 年,SQL 仍然没有任何其他指定列的方式.您必须全部输入。
  • 为什么会有两张这么相似的表?

标签: c# sql


【解决方案1】:

只需将空值放入缺失的列并使用UNION ALL

select name, surname, age, gender, height, null, null from table1
union all
select name, surname, age, gender, null, dateofbirth, origin from table2

正如@TheImpaler 所提到的那样,没有办法手动选择列。

【讨论】:

    【解决方案2】:

    您可以使用 ROW_NUMBER 函数

    SELECT t1.Column1, t1.Column2, t2.Column3, t2.Column4
    FROM (
       SELECT Column1, Column2,
              ROW_NUMBER() OVER (ORDER BY Column1) AS rn
       FROM Table1) AS t1
    FULL OUTER JOIN  (
       SELECT Column3, Column4,
              ROW_NUMBER() OVER (ORDER BY Column3) AS rn
       FROM Table2) AS t2
    ON t1.rn = t2.rn  
    

    【讨论】:

      【解决方案3】:

      请试试这个。

      SELECT 
          Name, Surname, Age, Gender, Height,NULL AS DateOfBirth,NULL AS  Origin 
      FROM 
          table1 
      
      UNION ALL
      
      SELECT 
          Name, Surname, Age, Gender, NULL AS Height, DateOfBirth, Origin
      FROM 
          table2 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-24
        • 1970-01-01
        • 2014-06-02
        • 1970-01-01
        • 2017-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多