sql >> Database teknologi >  >> RDS >> Mysql

Mysql Inner join med OR-tilstand?

Du kan deltage på location_distance tabel to gange ved hjælp af en LEFT JOIN og brug derefter COALESCE() funktion for at returnere den korrekte værdi for distance :

select ot.id,
  ot.fromlocid,
  ot.tolocid,
  ot.otherdata,
  coalesce(ld1.distance, ld2.distance) distance
from other_table ot
left join location_distance ld1
  on ld1.fromLocid = ot.toLocid
  and ld1.toLocid = ot.fromLocid 
left join location_distance ld2
  on ld2.toLocid = ot.toLocid
  and ld2.fromLocid = ot.fromLocid 
 

Se SQL Fiddle with Demo

Dette returnerer resultatet:

| ID | FROMLOCID | TOLOCID | OTHERDATA | DISTANCE | --------------------------------------------------- | 12 | 5 | 3 | xxxx | 70 | | 22 | 2 | 4 | xxxx | 63 | | 56 | 8 | 6 | xxxx | 15 | | 78 | 3 | 5 | xxxx | 70 |

  1. Hvor kan jeg downloade eksempler på Mysql-database?

  2. Hvordan opdaterer jeg fra en SELECT i SQL Server?

  3. PostgreSQL fejl 'Kunne ikke oprette forbindelse til server:Ingen sådan fil eller mappe'

  4. MySQL:Embedded JSON vs table