sql通过列号/索引/位置而不是列名选择列

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)

CL.*_*CL. 5

如果数据库支持公共表表达式(除 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)