首页 > 解决方案 > 如何将硬编码值包含在 mysql 查询的输出中?

问题描述

我创建了一个MySQL sproc,它返回 3 个单独的结果集。我正在下游实现 npm mysql 包以执行 sproc 并获得具有 3 个结果集的 json 结构的结果。我需要能够根据每个结果集中的某种类型的指标过滤返回的 json 结果集。例如,如果我想从专门处理供应商的 json 响应中获取结果集,那么我可以使用某种类型的 js 过滤器,类似于:

var supplierResultSet = mySqlJsonResults.filter(x => x.ResultType === 'SupplierResults');

我认为 SQL Server 提供了在 SQL 结果集中包含硬编码列值的能力,如下所示:

select
'SupplierResults',
*
from
supplier

但是,这种方法在 MySQL b/c 中似乎无效 MySQL Workbench 告诉我 sproc 语法无效,不会让我保存更改。您是否知道在 MySQL 中是否可以实现我想要实现的目标,如果没有,那么您能否推荐其他方法来帮助我实现最终目标,即在每个结果集中包含某种类型的固定指标以提供处理json响应的下游过滤?

标签: mysqlsqlselect

解决方案


如果我正确地关注了你,你只需要*在表名或别名前加上前缀:

select 'SupplierResults' hardcoded, s.* from supplier s

据我所知,这是 SQL 标准。只有在子句select *中没有添加其他表达式时才有效;selecSQL Server 对此松懈,但大多数其他数据库都遵循该标准。

为包含硬编码值的列分配一个名称也是一个好主意(我hardcoded在上面的查询中命名了它)。


推荐阅读