sql >> Databáze >  >> RDS >> Mysql

Vnitřní spojení Mysql s podmínkou NEBO?

Můžete se připojit na location_distance tabulky dvakrát pomocí LEFT JOIN a poté použijte COALESCE() funkce vrátí správnou hodnotu pro 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 

Viz SQL Fiddle s ukázkou

To vrátí výsledek:

| 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. Jaký je rozdíl mezi MySQL a MySQL2 s ohledem na NodeJS

  2. Nodejs vyjadřuje a slibuje, že neudělá to, co očekávám

  3. Highcharts víceřádkové grafy

  4. Použití merge..output k získání mapování mezi source.id a target.id