mysql - 如何将硬编码值包含在 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响应的下游过滤?
解决方案
如果我正确地关注了你,你只需要*
在表名或别名前加上前缀:
select 'SupplierResults' hardcoded, s.* from supplier s
据我所知,这是 SQL 标准。只有在子句select *
中没有添加其他表达式时才有效;selec
SQL Server 对此松懈,但大多数其他数据库都遵循该标准。
为包含硬编码值的列分配一个名称也是一个好主意(我hardcoded
在上面的查询中命名了它)。
推荐阅读
- c# - 如何在 ModelState 中预定义键以及如何添加更多键?
- ssis - SSIS 结合 2 个来源,Merge 和 Join 不适用
- r - 如何在 R 中绘制具有 3 个 FACTORS 的分组和堆叠条形图?
- ruby-on-rails - 使用自动递增名称的 Rails 表单中的输入 X 创建 X 数量的新数据库行
- angular - 如何在 Angular 产品构建后减少文件名
- mysql - 返回 5 公里内的项目并加入 4 个不同的表 mysql?
- python - gc 上的分段错误,使用 ctypes
- android - 如何解决错误代码:0,Android 上的消息 HTTP 失败 - IONIC API
- android - Android Q 删除文件文件操作
- kotlin - 这是一个比较两个对象的灵活数据类的好解决方案吗?