如何在MySQL中查询多表

如何在MySQL中查询多表

我有2个表,我想同时获得按创建日期时间排序的两行。

例如,我有t1t2,表的架构如下所示:

----------------------
        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`之间没有任何关系,并且只有单独的表。

那可能吗?如果是,我该怎么做?

最佳答案

您可以将表合并在一起,并根据title的最右边部分(用下划线分隔)或此处有意义的任何顺序生成行ID(由于我仔细研究了一下,因此并没有真正遵循所需结果的顺序) ):

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);

关于mysql - 如何在MySQL中查询多表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53791736/

10-12 00:40