sql >> Database >  >> RDS >> Oracle

SQL:hoe UNION te gebruiken en te bestellen op een specifieke select?

U wilt dit doen:

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

Bijwerken

Ik heb gemerkt dat, hoewel je twee verschillende tabellen hebt, je lid wordt van de ID's, dat wil zeggen, als je 1 hebt in beide tabellen krijgt u slechts één exemplaar. Als dat het gewenste gedrag is, moet je je houden aan UNION . Zo niet, ga dan naar UNION ALL .

Dus ik merk ook dat als je verandert naar de code die ik heb voorgesteld, je beide 1 . krijgt en 2 (van beide a en b ). In dat geval wilt u misschien de voorgestelde code wijzigen 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


  1. Retourrij met de maximale waarde van één kolom per groep

  2. SQL-impasses vermijden met het afstemmen van zoekopdrachten:advies van Brent Ozar

  3. Een incrementeel groepsnummer per groep retourneren in SQL

  4. Wat is in een Oracle-database het verschil tussen ROWNUM en ROW_NUMBER?