我有两张桌子。第一个是table1,第二个是table2。我附上了两张桌子图片。我想像UNION ALL运算符一样加入这两个表。我需要一个额外的列表名称是sid,这个sid就像一个主键。当我需要我的项目时,我附上了一张图片。对我的英语非常抱歉。谢谢!
SELECT * FROM `table1`
UNION ALL
SELECT * FROM `table2`
表1
表2
我需要像这张图片的结果
答案 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
一个子查询可能已经足够了,但我现在无法尝试。