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

如何在MySQL中结合参数使用WITH子句(类PostgreSQL写法)

在MySQL中结合WITH子句与VALUES使用参数的方法

MySQL 8.0及以上版本支持WITH(公共表表达式,CTE),但语法上和PostgreSQL的WITH ... AS (VALUES(...))略有不同,你可以通过以下方式实现类似效果:

单参数场景

如果只需要传递单个参数,直接用SELECT语句在CTE中定义参数即可:

WITH params(idmodelo) AS (
    SELECT 10 AS idmodelo
)
SELECT * FROM modelo WHERE idmodelo = (SELECT idmodelo FROM params);

多参数场景

如果需要传递多个参数,用UNION ALL拼接多个SELECT来模拟VALUES的多行效果:

WITH params(idmodelo) AS (
    SELECT 10 UNION ALL
    SELECT 20 UNION ALL
    SELECT 30
)
SELECT * FROM modelo WHERE idmodelo IN (SELECT idmodelo FROM params);

补充说明

MySQL并不支持直接在CTE中使用VALUES(...)作为数据源,所以用SELECT或UNION ALL的方式是最贴近PostgreSQL写法的替代方案,同样能实现将参数封装到CTE中复用的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:08:10