我创建了一个MySQL sproc,它返回3个独立的结果集。我正在下游实现npm包,以执行sproc,并在json中获得一个带有3个结果集的结果。我需要过滤json结果集的能力,这些结果集是根据每个结果集中的某种类型的指示符返回的。例如,如果我想从专门处理供应商的json响应中获得结果集,那么我可以使用类似于以下内容的某种类型的js过滤器:
var supplierResultSet = mySqlJsonResults.filter(x => x.ResultType === 'SupplierResults');我认为Server提供了在如下SQL结果集中包含硬编码列值的能力:
select
'SupplierResults',
*
from
supplier但是,这种方法在MySQL b/c MySQL工作台中似乎是无效的,它告诉我sproc语法是无效的,并且不允许我保存更改。您知道,如果在MySQL中有类似我正在尝试实现的目标是可能的,那么您是否可以推荐其他方法,帮助我实现我的最终目标:在每个结果集中包括某种类型的固定指示符,以便为json响应的下游过滤提供一个句柄?
发布于 2020-01-24 23:09:16
如果我正确地跟踪了您,只需在*前面加上表名或别名:
select 'SupplierResults' hardcoded, s.* from supplier s据我所知,这是SQL标准。只有在select *子句中没有添加其他表达式时,selec才是有效的;Server对此不严格,但大多数其他数据库都遵循该标准。
为包含硬编码值的列分配一个名称也是一个好主意(我在上面的查询中将其命名为hardcoded )。
发布于 2020-01-24 23:31:55
更具体而言,在您的查询中,您需要这样做。
select
'SupplierResults',
supplier.* -- <-- this
from
supplier尝尝这个
create table a (f1 int);
insert into a values (1);
select 'xxx', f1, a.* from a;基本上,如果select中还有其他字段,则前缀'*‘加上表名或别名
发布于 2020-01-25 00:00:06
https://stackoverflow.com/questions/59904760
复制相似问题