我需要先在列表中显示一组结果,然后显示下表中的其余结果。
我已尝试过SQL: how to use UNION and order by a specific select?,但在我的情况下似乎不起作用。
我的查询看起来像这样
SELECT * FROM (
SELECT id, display as ordered
FROM table
WHERE id in (...) --these need to be first
UNION
SELECT id, display
FROM table
WHERE id not in (...) --these need to be at the end
)
ORDER BY ordered
无论我做什么,我的结果都会以显示顺序返回。
我正在使用Oracle,顺便说一句。
感谢您的帮助。
答案 0 :(得分:5)
您需要明确包含数字才能获得排序。此查询首先排序第一个结果集,然后排序第二个结果集。在每个组中,结果再次按id排序。 (如果不需要,将其删除)
Texture
答案 1 :(得分:1)
我认为你应该这样做:
select id, display
from table
order by (case when id in (. . .) then 1 -- first list
when id in (. . .) then 3 -- last list
else 2 -- everything else
end);
无需union
或union all
。只需一个order by
表达式。
如果您不想要所有ID,则应包含where
条款。
(我发现你的问题对于列表的构成有点不清楚。如果真的合适,可以使用not in
。)