我的SQL查询就是这样
SELECT `product_code`, `test`
FROM `table_products`
WHERE `product_code` IN ('38986', '222098', '1113426', '3645651', ...)
我希望结果按照查询中显示的product_code顺序排序,并且当表中该product_code不匹配时,我想在SQL结果中添加一个空行。
答案 0 :(得分:1)
(可能)没有其他方法,除了将值表示为行:
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
将按所需顺序对产品进行排序。
答案 1 :(得分:0)
您可以在另一个表中使用参考产品代码值,并使用右外部联接
例如)
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;