【问题标题】:Join Two Tables and filter records in sql在sql中加入两个表并过滤记录
【发布时间】:2016-06-04 18:45:00
【问题描述】:

我需要在Room No 上连接两个表值。

这是我的桌子:

房间状态表

----------------------------------------------------
| Room No   |   Type   |  Date     |  Descriprion  |
----------------------------------------------------
|  1        |    AC    |22 Jan 2015|   VA          |
|  2        |    AC    |22 Jan 2015|   VA          |
|  3        |    AC    |22 Jan 2015|   VA          |
|  4        |    AC    |22 Jan 2015|   VA          |

已订房的桌子

----------------------------------------------------
| Room No   |   Type   |  Date     |  Descriprion  |
----------------------------------------------------
|  1        |    AC    |22 Jan 2015|   BK001       |
|  2        |    AC    |22 Jan 2015|   BLOCK       |
|  4        |    AC    |22 Jan 2015|   OC001       |

我需要如下结果:

----------------------------------------------------
| Room No   |   Type   |  Date     |  Descriprion  |
----------------------------------------------------
|  1        |    AC    |22 Jan 2015|   BK001       |
|  2        |    AC    |22 Jan 2015|   Block       |
|  3        |    AC    |22 Jan 2015|   VA          |
|  4        |    AC    |22 Jan 2015|   OC001       |

像这样,表 1 包含所有记录,但是,表 2 仅包含基于该更改描述的占用记录作为我的结果。

【问题讨论】:

  • 为什么你同时标记了 MySQL 和 SQL server?您使用的是哪个数据库系统?

标签: mysql sql sql-server sql-server-2008


【解决方案1】:

使用Left join从两个表中获取数据:

select r1.room_no,
       r1.Type,
       r1.Date, 
case when r2.Descriprion is null then r1.Descriprion else r2.Descriprion end as description   
from RoomStatus r1 
left join RoomBooked r2 on r1.room_no=r2.room_no
order by r1.room_no;

【讨论】:

    【解决方案2】:

    使用 Coalesce 函数返回两个描述列之间的第一个非空值,

    select r1.room_no,
           r1.Type,
           r1.Date, 
           coalesce(r2.Descriprion ,r1.Descriprion) As description   
    from RoomStatus r1 
    left join RoomBooked r2 on r1.room_no = r2.room_no
    order by r1.room_no;
    

    【讨论】:

      猜你喜欢
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      相关资源
      最近更新 更多