vim*_*liu 1 mysql sql sqlite postgresql postgresql-9.1
如何通过列号/索引/位置而不是列名查询选择列?
到目前为止这不起作用:
SELECT 1,2,3,4,5,6,7 from table_1
Union
SELECT 1,2,3,4,5,6,7 from table_2
Run Code Online (Sandbox Code Playgroud)
如果数据库支持公共表表达式(除 MySQL 之外的所有表达式),您可以为列指定新名称:
WITH cte(c1, c2, c3, c4, c5, c6, c7) AS (
SELECT * FROM table_1
UNION
SELECT * FROM table_2
)
SELECT c1, c2, c3, c4, c5, c6, c7 FROM cte;
Run Code Online (Sandbox Code Playgroud)
但是,只有当您可以使用 时,这才有效SELECT *,因此两个表必须具有相同的已知列数。
在 MySQL 中,您可以使用带有列名的视图:
CREATE VIEW v(c1, c2, c3, c4, c5, c6, c7) AS SELECT ...;
Run Code Online (Sandbox Code Playgroud)