Mysql查询和重新排序结果
我的SQL查询是这样的Mysql查询和重新排序结果,mysql,sql,sql-order-by,where-in,Mysql,Sql,Sql Order By,Where In,我的SQL查询是这样的 SELECT `product_code`, `test` FROM `table_products` WHERE `product_code` IN ('38986', '222098', '1113426', '3645651', ...) 我希望结果按查询中显示的产品代码顺序排序,并且当表中的产品代码不匹配时,我希望在SQL结果中添加一个空行。除了将值表示为行之外,可能没有其他方法: SELECT codelist.code, table_products.wha
SELECT `product_code`, `test`
FROM `table_products`
WHERE `product_code` IN ('38986', '222098', '1113426', '3645651', ...)
我希望结果按查询中显示的产品代码顺序排序,并且当表中的产品代码不匹配时,我希望在SQL结果中添加一个空行。除了将值表示为行之外,可能没有其他方法:
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
如果没有匹配项,左连接将为您提供代码号和空的右侧行。ORDER BY sort将按所需顺序对产品进行排序。您可以将参考产品代码值放在另一个表中,并使用右外联接 乙二醇
当表中的产品代码不匹配时,我想在sql结果中添加一个空行。为什么?我假设您的意思是,如果产品代码222098实际上不存在,您希望在结果集中返回一个空行!对吗?我需要导出数据并匹配到csv文件
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;