这可能吗?
我有一个示例查询:
select vehicle_name
from vehicles
where vehicle_name in ('TOYO', 'HOND');
我在IN
运算符子句中可能有很多vehicle_name。它返回的结果在下面给出的屏幕截图中(屏幕截图1)。
我想要的是在第二个截图(截图2)中,第一行应该是HOND而第二行应该是TOYO。 (基于字母顺序)第三行应为HOND,第四行应为TOYO。等等等等。换句话说,两个HOND或两个TOYO不应该一个接一个地到达结果的末尾,而没有找到替代的vehicle_name。
谢谢,
答案 0 :(得分:1)
您可以使用分析函数ROW_NUMBER()
分别为每个vehicle_name
生成序列号,并将其用于排序。您不需要将该功能添加到SELECT
- 您可以直接在ORDER BY
中使用该功能。
SELECT vehicle_name
FROM vehicles
WHERE vehicle_name in ('HOND', 'TOYO')
ORDER BY row_number() over (partition by vehicle_name order by null), vehicle_name
;