首页 > 解决方案 > 显示记录仅包含在另一列上具有不同值的唯一引用键

问题描述

很抱歉,我忘记了其他情况,所以我需要重新发布这个问题,即使我已经尝试使用 NOT IN 并且 NOT EXISTS 但它没有用。

我有如下表A: -

id | room_id| room_status
 1 |   16    |  Out
 2 |   2     |  Out
 3 |   4     |  Out
 4 |   16    |   In
 5 |   3     |   In
 6 |   10    |   In

“Out”表示房间可以免费预订。“在”表示房间已被占用,无法选择。

也有如下表B: -

room_id  | Own_by
   2     | Comp A
   3     | Comp A
   4     | Comp A
  10     | Comp A
  16     | Comp A
  20     | Comp A

期望的输出:-

room_id
   2
   4
   3
  20

旧问题:我想显示 room_id 3 也是因为它当前已被选中,但也可以更改为 room_id 2、4 且 room_status “Out”的其他房间。我不希望 room_id 16, 10 出现,因为它们当前未被选中且已被占用。- 感谢@P.Salmon 和@GordonLinoff,这个已经开始工作了。

新问题:还需要显示不在表 A 中的 room_id 20。我该怎么做?非常感谢任何帮助。

标签: mysqlsql

解决方案


不确定我是否了解当前选择,但也许这个

select id,room_id,room_status
from t
where id = (select max(id) from t t1 where t1.room_id = t.room_id)
and (room_status = 'out' or room_id = 3)

假设 max(id) 是最新状态的所在地。和房间 3 的状态无关。

+------+---------+-------------+
| id   | room_id | room_status |
+------+---------+-------------+
|    2 |       2 | Out         |
|    3 |       4 | Out         |
|    5 |       3 | In          |
+------+---------+-------------+
3 rows in set (0.00 sec)

推荐阅读