sql >> Databasteknik >  >> RDS >> Oracle

SQL-fråga för att hitta saknade rader mellan två relaterade tabeller

SELECT A.ABC_ID, A.VAL FROM A WHERE NOT EXISTS 
   (SELECT * FROM B WHERE B.ABC_ID = A.ABC_ID AND B.VAL = A.VAL)

eller

SELECT A.ABC_ID, A.VAL FROM A WHERE VAL NOT IN 
    (SELECT VAL FROM B WHERE B.ABC_ID = A.ABC_ID)

eller

SELECT A.ABC_ID, A.VAL LEFT OUTER JOIN B 
    ON A.ABC_ID = B.ABC_ID AND A.VAL = B.VAL FROM A WHERE B.VAL IS NULL

Observera att dessa frågor inte kräver att ABC_ID finns i tabell B alls. Jag tror att det gör vad du vill.



  1. Ta bort dubblett från en tabell

  2. Utlöser utlösare vid uppdatering av kolumnA eller kolumnB eller kolumnC

  3. INFOGA ... PÅ DUBLIKATNYCKEL (gör ingenting)

  4. Tips för att uppgradera till från MySQL 5.7 till MySQL 8