【问题标题】:Merge results from two different tables with different column number, ORDER them by same key合并来自具有不同列号的两个不同表的结果,按相同键对它们进行排序
【发布时间】:2023-04-09 18:19:01
【问题描述】:

我有两张桌子:

Table A: ID Cars Planes Num
          1    3      5   2
          2    8      44  1
          3    7      23  6
          4    6      2   7

Table B: ID Horses Dogs Cats Elefants Num
          1    3      5   2      3     3  
          2    8      44  1     22     4
          3    7      23  4     14     8
          4    6      2   3     15     5

我需要做的:我需要从两个表中获取所有结果并按“Num”列对它们进行排序,其中“数字”实际上对于两行的每个结果都是唯一的。

是否甚至可以“合并”这两个表并按“num”对它们进行排序,或者我应该只对每个表进行单独排序,并始终进行两个循环检查表之间的下一个 num 跳转?

谢谢

【问题讨论】:

    标签: php mysql sql sql-server sqlite


    【解决方案1】:

    你可以像这样用 UNION 合并它们。

    试试这个:

    select num from(
        select num from table1
        union all
        select num from table2
        )t
    order by num asc
    

    DEMO HERE

    编辑:

    select id ,Cars,Planes, Horses,Dogs,Cats,Elefants,num from(
        select id ,Cars,Planes,'No horses' Horses,'No dogs' Dogs,'No cats' Cats,'No elefants' Elefants,num from table1
    union all
    select id,'No cars' Cars,'No planes' Planes,Horses,dogs,Cats,Elefants, num from table2
     )t
     order by num asc;
    

    DEmo with other columns

    【讨论】:

    • 非常感谢,但我不仅需要 num 列,还需要保留所有其他列。谢谢
    • 这只是一个例子:),你可以添加其他列:) wil ledit
    • sqlfiddle.com/#!2/72ba88/8 看看,如果我想选择所有列,它会报错。
    • 没有你的小提琴是错的,因为表格有不同的列数,看看我的编辑小提琴,你可以添加其他错过的列,我只是放了一些。
    • 非常感谢,是否有可能在不定义我想要的确切列的情况下做到这一点?所以只有使用“select *”?
    【解决方案2】:
    SELECT NUM FROM TABLEA
    UNION ALL
    SELECT NUM FROM TABLEB
    ORDER BY 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-12
      • 1970-01-01
      • 2013-11-02
      • 2016-11-23
      • 1970-01-01
      • 2021-12-13
      • 2023-01-21
      • 1970-01-01
      相关资源
      最近更新 更多