我想对SQL进行特殊查询,但无法获得所需的结果。
我的基本查询是:
select * from TABLE_NAME where COLUMN_NAME_1 in ('ABC1', 'ABC98', 'ABC97', 'ABC2', 'ABC3')
假设表中没有项目“ ABC1”。我希望我的查询显示它。另外,我希望查询以我询问的顺序显示项目(ABC1,ABC98,ABC97等)。
我附上一张图片,使您可以更好地了解我想要的东西。
提前致谢
最佳答案
您需要使用外部join
或union all
。一种方法如下所示:
select v.col1, . . .
from (select 'ABC1' as col1, 1 as ord union all
select 'ABC98', 2 union all
. . .
) left join
TABLE_NAME t
on t.column_name_1 = v.col1
order by ord;
值列表的确切语法因数据库而异。以上适用于MySQL。 Oracle将在子查询中要求
from dual
。关于mysql - SQL搜索按请求的相同顺序显示未找到的项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47288369/