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

MySQL中如何为VALUES语句子查询的列命名?

MySQL中为VALUES子查询列命名的实现方法

问题场景

在T-SQL中可直接为VALUES子查询的列指定名称,示例如下:

SELECT x.a, x.b, x.c
FROM (VALUES
    ('PPA', 'blah', 30)
    , ('PPB', 'blah blah', 60)
) AS x(a, b, c)

但在MySQL中直接套用该语法会报错,且该子查询需用于包含INSERT和LEFT JOIN的复杂语句中,无法简化为无嵌套形式。

解决方案

方法一:MySQL 8.0.19及以上版本适用

从MySQL 8.0.19版本开始,支持使用ROW()构造器,并在子查询别名后直接定义列名,语法与T-SQL接近:

SELECT x.a, x.b, x.c
FROM (
    VALUES
        ROW('PPA', 'blah', 30),
        ROW('PPB', 'blah blah', 60)
) AS x(a, b, c)

方法二:全版本兼容写法

若使用的MySQL版本低于8.0.19,可通过UNION ALL拼接带列别名的SELECT语句实现,该写法适配所有MySQL版本:

SELECT x.a, x.b, x.c
FROM (
    SELECT 'PPA' AS a, 'blah' AS b, 30 AS c
    UNION ALL
    SELECT 'PPB' AS a, 'blah blah' AS b, 60 AS c
) AS x

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 07:43:19