SQL 服务器 : custom column sort in WHERE IN

标签 sql sql-server

我想在 SQL Server 中对这个查询的结果进行排序:

SELECT * 
FROM t1 
WHERE t1.my_field_name IN ('val1', 'val2', 'val3');

...这样我就可以按照与 IN 列表值相同的顺序对结果进行排序。

在 mySQL 中这可以很容易地完成:

SELECT * 
FROM t1
WHERE my_field_name IN ('val1', 'val2', 'val3') 
ORDER BY FIELD(my_field_name, 'val1', 'val2', 'val3');

...但我不知道如何在 SQL Server 中执行此操作。有什么建议吗?

最佳答案

使用这样的 case 语句:

ORDER BY
   CASE field
      WHEN 'val1' THEN 1
      WHEN 'val2' THEN 2
      WHEN 'val3' THEN 3
   END, my_field_name

关于SQL 服务器 : custom column sort in WHERE IN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70032633/

相关文章:

sql-server - 基于开始结束日期 SQL Server 拆分行

mysql - SQL 语法错误和事件无法启动

mysql - 在另一个表中使用常量进行除法的问题

sql-server - 如何在azure sql云中调用Web api?支持吗?

java - 名称为 ... 的游标已存在 - SQL Server 2008

sql - 在 T-SQL 中组合名字、中间名首字母、姓氏和后缀(无多余空格)

sql - 如何生成特定长度的单列?

sql - 为什么我的函数返回逗号分隔列表而不是行 (SQL Server)?

sql - 构建 INSERT 语句值的动态列表

mysql - mysql中的季度分析/月分析