sql获取信息,但顺序错误

lem*_*unk 5 sql

嗨伙计们我在sql中有以下查询

SELECT 
a1 
FROM 
dbo.myProductNames 
WHERE
 keycode = 40  OR keycode = 28 OR keycode = 32 OR keycode = 50
Run Code Online (Sandbox Code Playgroud)

a1 =我需要表格中的信息的名称,以便按照我要求的顺序输出其查询的名称,所以我需要40先成为28然后再打开.

原因是我的代码读取结果并存储在一个数组中,然后用于在表单上显示.

SQL查询来自的表具有以num顺序存储的信息,因此将首先读取28等.

正如我所说,我需要按照我在where子句中输入的顺序获取信息.

我正在考虑与嵌套的Select语句有关,尽管我从未尝试嵌套选择.

或者,有一个简单的方法吗?

任何帮助都会很棒!

提前谢谢了!

!!!!! UPDATE !!!!!

好的,这是解决方案,谢谢你们!

SqlCommand pgNameFill = new SqlCommand("SELECT  a1, CASE keycode WHEN @pg1 THEN 1 WHEN @pg2 THEN 2 WHEN @pg3 THEN 3 WHEN @pg4 THEN 4 END AS SortOrder FROM  dbo.myProductNames WHERE keycode IN (@pg1, @pg2, @pg3, @pg4) ORDER BY SortOrder ASC", conny1);

        pgNameFill.Parameters.AddWithValue("@pg1", pg1);
        pgNameFill.Parameters.AddWithValue("@pg2", pg2);
        pgNameFill.Parameters.AddWithValue("@pg3", pg3);
        pgNameFill.Parameters.AddWithValue("@pg4", pg4);
        SqlDataReader readpg = pgNameFill.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)

非常感谢所有的帖子!我希望我可以举出更多的答案,而不仅仅是一个,哦,好吧赞成四周!

Ale*_* K. 5

一种方法(假设您的历史记录中有mssql);

;with myRank(rank, keycode) as (
    select 1, 40 union
    select 2, 28 union
    select 3, 32 union
    select 4, 50
)
select 
    a1
from 
    myProductNames 
    inner join myRank on (myProductNames.keycode = myRank.keycode)
order by
    myRank.rank asc
Run Code Online (Sandbox Code Playgroud)


小智 5

添加以下ORDER BY子句:

ORDER BY
CASE keycode 
    when 40 then 1
    when 28 then 2
    when 32 then 3
    when 50 then 4
END
Run Code Online (Sandbox Code Playgroud)