MySQL加入两个表,添加一个额外的列

时间:2018-03-12 16:51:34

标签: mysql mariadb

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

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

enter image description here

表1

enter image description here

表2

我需要像这张图片的结果

enter image description here

1 个答案:

答案 0 :(得分: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

一个子查询可能已经足够了,但我现在无法尝试。