Mysql запрос и изменение порядка результатов - PullRequest
0 голосов
/ 14 февраля 2019

Мой SQL-запрос похож на это

SELECT `product_code`, `test`
FROM `table_products`
WHERE `product_code` IN ('38986', '222098', '1113426', '3645651', ...)

Я бы хотел, чтобы результаты были упорядочены в порядке, указанном в запросе product_code, а также, когда в таблице нет совпадений для этого product_code, я хотел быдобавить пустую строку в результат SQL.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

В другой таблице вы можете использовать эталонные значения кода продукта и использовать правое внешнее соединение

например)

create table Test(id integer, title varchar(100));
create table ref(idtosee integer);//reference table
insert into ref(idtosee) values(1);
insert into ref(idtosee) values(4);
insert into Test(id, title) values(1, "Hello");
insert into Test(id, title) values(2, "sHello");


select id,title,idtosee from Test right outer join ref on id=idtosee;
0 голосов
/ 14 февраля 2019

Там (вероятно) нет другого способа, кроме как выразить значения в виде строк:

SELECT codelist.code, table_products.whatever
FROM (
    SELECT 38986 AS code, 1 AS sort UNION ALL
    SELECT 222098,        2         UNION ALL
    SELECT 1113426,       3         UNION ALL
    SELECT 3645651,       4
) AS codelist
LEFT JOIN table_products ON codelist.code = table_products.product_code
ORDER BY codelist.sort

LEFT JOIN даст вам номер кода и пустую строку в правой части, если совпадение не найдено,ORDER BY sort отсортирует товары в нужном порядке.

...