sql >> Databasteknik >  >> RDS >> Oracle

SQL:hur man använder UNION och beställer efter ett specifikt urval?

Du vill göra detta:

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

Uppdatera

Jag märkte att även om du har två olika tabeller så går du med i ID:n, det betyder att om du har 1 i båda tabellerna får du bara en förekomst. Om det är det önskade beteendet bör du hålla dig till UNION . Om inte, ändra till UNION ALL .

Så jag märker också att om du ändrar till koden jag föreslog, skulle du börja få både 1 och 2 (från båda a och b ). I så fall kanske du vill ändra den föreslagna koden till:

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


  1. Får varning:Nullvärde elimineras av en sammanlagd eller annan SET-operation

  2. Hur MapReduce fungerar i Hadoop

  3. PDO förberedde satsen fetch() som returnerar dubbla resultat

  4. Använda Jenkins med Kubernetes AWS, del 1