sql >> Database >  >> RDS >> Oracle

gedrag van inner join inside bestaat sql

Het verschil is dat wanneer je exists - de query binnenin hangt meestal af van de hoofdquery (mean gebruikt kolommen ervan en kan dus niet afzonderlijk worden uitgevoerd) en dus wordt voor elke rij van de hoofdquery gecontroleerd of bepaalde gegevens die door de subquery worden opgehaald, al dan niet bestaan.

Het probleem van uw eerste query is dat de subquery in het bestaande blok niet afhangt van de hoofdquerykolommen, het is een afzonderlijke query die altijd een rij retourneert met 1 , dus voor elke rij van de hoofdquery bestaat het resultaat van exists zal altijd true zijn . Uw eerste zoekopdracht is dus gelijk aan

SELECT distinct(company_id)
FROM user
WHERE user.user_id = 123 
AND user.company_id IS NOT NULL

Zie ook viool



  1. XAMPP - MySQL wordt onverwacht afgesloten

  2. Een MySQL-database initialiseren die is geïmplementeerd in een AWS EKS

  3. Problemen met contenttypes bij het laden van een fixture in Django

  4. Is er een manier om het postgresql 9.3-gegevenstype te casten, zodat het slechts één kant kan beïnvloeden?