oracle查询时如何按照in中id的顺序出来结果
时间: 2024-02-21 15:01:13 浏览: 114
在 Oracle 查询中,如果要按照 IN 子句中 id 的顺序来输出结果,可以使用以下两种方法:
1. 使用 CASE WHEN 语句
可以使用 CASE WHEN 语句来实现按照 IN 子句中 id 的顺序来输出结果,例如:
```
SELECT *
FROM my_table
WHERE id IN (1, 3, 2)
ORDER BY
CASE id
WHEN 1 THEN 1
WHEN 3 THEN 2
WHEN 2 THEN 3
END;
```
上述查询语句中,使用了 CASE WHEN 语句来为每个 id 指定一个排序值,然后使用 ORDER BY 子句按照这个排序值进行排序,从而实现按照 IN 子句中 id 的顺序来输出结果。
2. 使用 WITH 语句
可以使用 WITH 语句来创建一个临时表,将 IN 子句中的 id 与其排序值存储在这个临时表中,然后使用这个临时表进行查询,例如:
```
WITH id_list AS (
SELECT 1 AS id, 1 AS sort_order FROM DUAL
UNION ALL SELECT 3, 2 FROM DUAL
UNION ALL SELECT 2, 3 FROM DUAL
)
SELECT my_table.*
FROM my_table
JOIN id_list ON my_table.id = id_list.id
ORDER BY id_list.sort_order;
```
上述查询语句中,使用了 WITH 语句创建了一个名为 id_list 的临时表,其中包含 IN 子句中的 id 与其排序值,然后将这个临时表与 my_table 进行 JOIN 操作,最后使用 ORDER BY 子句按照排序值进行排序,从而实现按照 IN 子句中 id 的顺序来输出结果。
阅读全文