在 mysql 联合查询中插入序列号

Insert serial no in mysql union query

我正在 mysql 使用 union as

进行查询
(Select id,c1,c2,c3 from table where c1=x1 and c2=x2 ) union  <<---block 1
(Select id,c1,c2,c3 from table where c1=x1 and c2=x2 ) union  <<---block 2
...
(Select id,c1,c2,c3 from table where c1=x1 and c2=x2 ) union  <<---block mth

哪个returnsresult

id|c1|c2|c3
------------
1 |..|..|..
2 |..|..|..
3 |..|..|..

.. .. .. ..
.. .. .. ..
nth.. .. ..

我想要 table 添加一个 no 显示结果是从 联合块

中获得的
id|c1|c2|c3|blk
---------------
1 |..|..|..|1
2 |..|..|..|1
3 |..|..|..|2

.. .. .. ..|3
.. .. .. ..|3
nth.. .. ..|3

使用 blk 编号向每个查询再添加 1 列:

(Select id,c1,c2,c3, 1 blk from table where c1=x1 and c2=x2 )
(Select id,c1,c2,c3, 2 from table where c1=x1 and c2=x2 ) 
...
(Select id,c1,c2,c3, <n> from table where c1=x1 and c2=x2 )

只需在select子句中添加一个常量即可:

SELECT id, c1, c2, c3, 1 AS blk FROM table WHERE c1 = x1 AND c2 = x2 UNION ALL -- block 1
SELECT id, c1, c2, c3, 2 FROM table WHERE c1 = x1 AND c2 = x2 UNION ALL        -- block 2
...
SELECT id, c1, c2, c3, m FROM table WHERE c1 = x1 AND c2 = x2                  -- block m