Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mysql Inner bergabung dengan kondisi ATAU?

Anda dapat bergabung di location_distance tabel dua kali menggunakan LEFT JOIN dan kemudian gunakan COALESCE() berfungsi untuk mengembalikan nilai yang benar untuk 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 

Lihat SQL Fiddle dengan Demo

Ini mengembalikan hasilnya:

| 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa mendapatkan id yang dimasukkan terakhir menggunakan Hibernate

  2. Rumus untuk Menghitung Kedekatan Geo

  3. pdo memasukkan gambar ke dalam database secara langsung - selalu memasukkan BLOB - 0B

  4. Grup DateTime berdasarkan tanggal dan jam

  5. Hitung persentil dari frekuensi di MySQL