【问题标题】:MySQL join two table with add one extra columnMySQL连接两个表并添加一个额外的列
【发布时间】:2018-03-12 16:51:34
【问题描述】:

我有一张两张桌子。第一个是table1,第二个是table2。我附上了两个表格图像。我想像 UNION ALL 运算符一样加入两个表。我需要一个额外的表字段名称是 sid 并且这个 sid 就像一个主键一样工作。当我需要我的项目时,我附上了一张图片。很抱歉我的英语。谢谢!

SELECT * FROM `table1`
UNION ALL
SELECT * FROM `table2`

表 1

表 2

我需要这样的图片

【问题讨论】:

    标签: mysql mariadb


    【解决方案1】:

    从您的示例中,我可以看到 table1 行在 table2 之前排序。在这种情况下,我为查询添加了额外的列,只是为了排序,然后在分配sid 时忘记它。 MySQL 不提供row_number 窗口函数,但是有一种方法可以在查询中使用变量生成序列:

    SELECT l.*, @rownum := @rownum + 1 AS sid
    FROM (
      SELECT t.id, t.name
      FROM (
        SELECT *, 1 as tbl_order FROM table1
        UNION ALL
        SELECT *, 2 FROM table2
      ) t
      ORDER BY tbl_order
    ) l,
      (SELECT @rownum := 0) r
    

    一个子查询可能就足够了,但我现在不能尝试。

    【讨论】:

      猜你喜欢
      • 2021-10-29
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多