Oracle
 sql >> Datenbank >  >> RDS >> Oracle

SQL:Wie verwendet man UNION und bestellt nach einer bestimmten Auswahl?

Sie möchten dies tun:

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

Aktualisieren

Ich habe festgestellt, dass Sie, obwohl Sie zwei verschiedene Tabellen haben, die IDs zusammenfügen, dh wenn Sie 1 haben In beiden Tabellen erhalten Sie nur ein Vorkommen. Wenn das das gewünschte Verhalten ist, sollten Sie sich an UNION halten . Wenn nicht, wechseln Sie zu UNION ALL .

Ich bemerke also auch, dass Sie, wenn Sie zu dem von mir vorgeschlagenen Code wechseln, anfangen würden, beide 1 zu erhalten und 2 (von sowohl a und b ). In diesem Fall sollten Sie den vorgeschlagenen Code ändern in:

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