如何在mysql中查询多表?

aurhwmvo  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(319)

我有2个表,我想得到这两个表的行,按每行的创建日期时间排序。
例如,我有 t1 以及 t2 表的模式如下:

----------------------
        t1    
----------------------
  id  | title | skill 
----------------------
  1   | T_1   | S_1
----------------------
  2   | T_2   | S_2
----------------------
  3   | T_3   | S_3
----------------------

----------------------
        t2    
----------------------
  id  | title | option 
----------------------
  1   | TT_1  | O_1
----------------------
  2   | TT_2  | O_2
----------------------
  3   | TT_3  | O_3
----------------------

我想得到这样的结果:

----------------------------------
            t1_t2
----------------------------------
tmp_id| title | option  |  skill
----------------------------------
  1   | TT_1  | O_1     |  
----------------------------------
  2   | T_2   |         |  S_2
----------------------------------
  3   | TT_3  | O_2     |  
----------------------------------
  4   | T_1   |         |  S_1
----------------------------------
  5   | TT_2  | O_3     |  
----------------------------------
  6   | T_3   |         |  S_3
----------------------------------

两者之间没有任何关系 t1 和t2`并且只有单独的表。
有可能吗?如果是,我怎么做?

o2rvlv0m

o2rvlv0m1#

您可以将表合并在一起,并基于表的最右边部分生成一个行id title 用下划线或任何有意义的顺序分开(现在我仔细看了一下,并没有真正按照所需结果的顺序):

Set @rn:=0;
SELECT @rn:=@rn+1 as tmp_id, title, option, skill
(
    SELECT title, CAST(NULL as VARCHAR(3)) as option, skill FROM t1
    UNION ALL
    SELECT title, option, NULL FROM t2

) subunion
ORDER BY SUBSTRING_INDEX(title, '_', -1);

相关问题