gpt4 book ai didi

sql ORDER BY 多个值的特定顺序?

转载 作者:行者123 更新时间:2023-11-29 11:05:00 30 4
gpt4 key购买 nike

好的,我有一个带有索引键和非索引字段的表。我需要找到具有特定值的所有记录并返回该行。我想知道我是否可以按多个值排序。

例子:

id     x_field
-- -----
123 a
124 a
125 a
126 b
127 f
128 b
129 a
130 x
131 x
132 b
133 p
134 p
135 i

伪:希望结果像这样排序,where ORDER BY x_field = 'f', 'p', 'i', 'a'

SELECT *
FROM table
WHERE id NOT IN (126)
ORDER BY x_field 'f', 'p', 'i', 'a'

所以结果是:

id     x_field
-- -----
127 f
133 p
134 p
135 i
123 a
124 a
125 a
129 a

语法是有效的,但是当我执行查询时它永远不会返回任何结果,即使我将它限制为 1 条记录。还有其他方法吗?

将 x_field 视为测试结果,我需要验证所有符合条件的记录。我想按失败值、通过值对测试结果进行排序。所以我可以先验证失败的值,然后使用 ORDER BY 验证传递的值。

我不能做什么:

  • GROUP BY,因为我需要返回具体的记录值
  • WHERE x_field IN('f', 'p', 'i', 'a'),我需要所有值,因为我正在尝试使用一个查询进行多个验证测试。并且 x_field 值不是按 DESC/ASC 顺序

写完这个问题后,我开始觉得我需要重新考虑一下,哈哈!

最佳答案

...
WHERE
x_field IN ('f', 'p', 'i', 'a') ...
ORDER BY
CASE x_field
WHEN 'f' THEN 1
WHEN 'p' THEN 2
WHEN 'i' THEN 3
WHEN 'a' THEN 4
ELSE 5 --needed only is no IN clause above. eg when = 'b'
END, id

关于sql ORDER BY 多个值的特定顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6332043/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com