You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否可以为SQL匿名VALUES子句指定自定义列名?

结论

完全可以为VALUES子句返回的列自定义名称,不存在用了匿名VALUES就没法定义列名的情况,主流SQL方言(PostgreSQL、MySQL 8.0+、SQL Server、SQLite等)都支持两种实现方式:


方式1:派生表后直接指定列名(最推荐,兼容性最好)

不需要依赖数据库对匿名VALUES的默认列名规则,在子查询的别名后直接按顺序定义所有列名即可:

SELECT id, letter
FROM (VALUES (1,'a'), (2,'b')) AS t(id, letter);

方式2:SELECT层单独别名(也就是你示例的写法)

这种写法也可以正常运行,前提是要匹配你所用数据库对匿名VALUES的默认列名规则:
比如PostgreSQL中匿名VALUES的默认列名为column1、column2,对应写法如下:

SELECT
    column1 AS id,
    column2 AS letter
FROM (
    VALUES (1,'a'),(2,'b')
) AS t;

注意这种写法兼容性较差,不同数据库的默认列名规则不一样,比如部分数据库会默认命名为col1、col2,或者expr1、expr2,不如第一种写法通用。


内容的提问来源于stack exchange,提问作者David542

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:24:07