mysql - 显示记录仅包含在另一列上具有不同值的唯一引用键
问题描述
很抱歉,我忘记了其他情况,所以我需要重新发布这个问题,即使我已经尝试使用 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。我该怎么做?非常感谢任何帮助。
解决方案
不确定我是否了解当前选择,但也许这个
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)
推荐阅读
- database - 如何从 oracle 中的 Base64 字符串中删除 '\r\n'?
- json - 当我将 JSON 数据渲染到 html 元素时,return str.replace(/\n\r?/g, "
") 不起作用 - javascript - Angular6:当 url 清楚地显示正确的值时,为什么 `ActivatedRoute.snapshot.queryParams` 为空?
- angular - 如何使用 d3.js 合并国家以制作地理地图?
- ionic-framework - 如何使用 ionic devapp 运行本机相机
- python - 将软件包安装到 Anaconda 环境
- r - R - 如何使用准引号动态构造变异函数名称
- mql5 - 在 mql5 中处理 json 字符串
- environment-variables - 如何使用 C# 和 VB.Net 编程语言创建、设置、读取和删除环境变量
- spring-data - 如何告诉 Spring Data Couchbase 嵌入或引用实体?