Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Mysql Tham gia bên trong với điều kiện HOẶC?

Bạn có thể tham gia trên location_distance bảng hai lần bằng cách sử dụng LEFT JOIN và sau đó sử dụng COALESCE() hàm để trả về giá trị chính xác cho 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 

Xem SQL Fiddle with Demo

Điều này trả về kết quả:

| 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. Các phương pháp hay nhất để lưu trữ thông tin ngân hàng trong cơ sở dữ liệu

  2. Định dạng ngày MySQL

  3. hiển thị dòng mới mysql trong HTML

  4. Thành phần thời gian dải Mysql từ datetime

  5. Truy vấn con MySQL - Chỉ tìm bản ghi đầu tiên trong THAM GIA TRÁI