要获取所有val1行,如果不存在,则获取所有val2行,如果不存在,则获取所有val3行,然后从Oracle 12中,您可以使用ORDER BY和FETCH FIRST ROW WITH TIES:
SELECT *
FROM table
ORDER BY field
FETCH FIRST ROW WITH TIES;
如果你的优先级不是按升序排列的,那么使用CASE表达式:
SELECT *
FROM table
ORDER BY
CASE field
WHEN 'val1' THEN 1
WHEN 'val2' THEN 2
WHEN 'val3' THEN 3
END
FETCH FIRST ROW WITH TIES;
在早期版本中,您可以使用RANK解析函数:
SELECT *
FROM (
SELECT t.*,
RANK() OVER (
ORDER BY CASE field
WHEN 'val1' THEN 1
WHEN 'val2' THEN 2
WHEN 'val3' THEN 3
END
) AS rnk
FROM table t
)
WHERE rnk = 1;
2条答案
按热度按时间t1qtbnec1#
要获取所有
val1
行,如果不存在,则获取所有val2
行,如果不存在,则获取所有val3
行,然后从Oracle 12中,您可以使用ORDER BY
和FETCH FIRST ROW WITH TIES
:如果你的优先级不是按升序排列的,那么使用
CASE
表达式:在早期版本中,您可以使用
RANK
解析函数:vecaoik12#
似乎COALESCE函数可以帮助您https://docs.oracle.com/javadb/10.8.3.0/ref/rreffunccoalesce.html