как включить жестко запрограммированное значение для вывода из запроса mysql? - PullRequest
0 голосов
/ 25 января 2020

Я создал MySQL spro c, который возвращает 3 отдельных набора результатов. Я реализую пакет npm mysql ниже по потоку, чтобы exe c spro c и получил результат, структурированный в json с 3 наборами результатов. Мне нужна возможность фильтровать наборы результатов json, которые возвращаются на основе определенного типа индикатора в каждом наборе результатов. Например, если бы я хотел получить результирующий набор из ответа json, который конкретно касается Поставщиков, то я мог бы использовать фильтр типа js, подобный следующему:

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

Я думаю SQL Сервер предоставляет возможность включить жестко запрограммированное значение столбца в набор результатов SQL, например:

select
'SupplierResults',
*
from
supplier

Однако этот подход представляется недопустимым в MySQL b / c MySQL Workbench сообщает мне, что синтаксис spro c недействителен и не позволяет мне сохранить изменения. Знаете ли вы, возможно ли что-то вроде того, чего я пытаюсь достичь в MySQL, и если нет, то можете ли вы порекомендовать альтернативные подходы, которые помогли бы мне достичь моей конечной цели - включить какой-либо фиксированный индикатор в каждый набор результатов, чтобы обеспечить ручка для последующей фильтрации ответа json?

Ответы [ 3 ]

2 голосов
/ 25 января 2020

Если я следил за вами правильно, вам просто нужно поставить префикс * с именем таблицы или псевдонимом:

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

Насколько я знаю, это стандарт SQL. select * действительно только тогда, когда в предложении selec не добавлено никакого другого выражения; SQL Сервер в этом не разбирается, но большинство других баз данных следуют стандарту.

Рекомендуется также присвоить имя столбцу, который содержит жестко закодированное значение (я назвал его hardcoded в запрос выше).

0 голосов
/ 25 января 2020

В MySQL вы можете просто поставить * первым:

SELECT *, 'SupplierResults'
FROM supplier

Демонстрация на dbfiddle

0 голосов
/ 25 января 2020

Чтобы быть более точным c, в вашем случае, в вашем запросе вам нужно сделать это

select
'SupplierResults',
supplier.*  -- <-- this
from
supplier

Попробуйте это

create table a (f1 int);
insert into a values (1);
select 'xxx', f1, a.* from a;

В основном, если есть другие поля в select, префикс «*» с именем таблицы или псевдонимом

...