sql >> データベース >  >> RDS >> Mysql

Mysql内部結合はOR条件ですか?

    location_distanceに参加できます LEFT JOINを使用してテーブルを2回 次に、COALESCE()を使用します 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 
    

    SQL Fiddle withDemo を参照してください。

    これにより、結果が返されます:

    | 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. 月ごとの製品売上を比較するSQLクエリ

    2. SQL結果(mysqlまたはperlのいずれか)で空の日付を埋める最も簡単な方法は何ですか?

    3. データベースのAzureSQLデータベースへの移行

    4. SQLServerでUnixタイムスタンプを日付/時刻値に変換する方法