Mysql 在sql中联接两个表并筛选记录
我需要将Mysql 在sql中联接两个表并筛选记录,mysql,sql,sql-server,sql-server-2008,Mysql,Sql,Sql Server,Sql Server 2008,我需要将房间号上的两个表值连接起来 这是我的桌子: RoomStatusTable ---------------------------------------------------- | Room No | Type | Date | Descriprion | ---------------------------------------------------- | 1 | AC |22 Jan 2015| VA
房间号
上的两个表值连接起来
这是我的桌子:
RoomStatusTable
----------------------------------------------------
| 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| 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仅包含基于作为我的结果的更改描述的占用记录。使用
左连接
从两个表中获取数据:
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;
使用Coalesce函数,该函数返回两个描述列之间的第一个不可为null的值
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;
为什么要同时标记MySQL和SQL server?您正在使用哪个数据库系统?