sql >> Base de Datos >  >> RDS >> Oracle

SQL:¿cómo usar UNION y ordenar por una selección específica?

Quieres hacer esto:

select * from 
(
    SELECT id, 2 as ordered FROM a -- returns 1,4,2,3
    UNION
    SELECT id, 1 as ordered FROM b -- returns 2,1
)
order by ordered

Actualizar

Me di cuenta de que, aunque tiene dos tablas diferentes, une las ID, es decir, si tiene 1 en ambas tablas, solo obtiene una aparición. Si ese es el comportamiento deseado, debe ceñirse a UNION . Si no, cambia a UNION ALL .

Entonces, también noté que si cambia al código que propuse, comenzaría a obtener ambos 1 y 2 (de ambos a y b ). En ese caso, es posible que desee cambiar el código propuesto a:

select distinct id from 
(
    SELECT id, 2 as ordered FROM a -- returns 1,4,2,3
    UNION
    SELECT id, 1 as ordered FROM b -- returns 2,1
)
order by ordered