嗨伙计们我在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)
非常感谢所有的帖子!我希望我可以举出更多的答案,而不仅仅是一个,哦,好吧赞成四周!
一种方法(假设您的历史记录中有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)