mysql - 如何将条件应用于子查询(MySQL)
问题描述
碰巧的是,在我提出问题后,我找到了解决方案。这是我遇到的问题:
我的数据库表是:
具有以下字段的预订:id、event_id、...
带有此类字段的评论:id、booking_id、event_id
和事件显然带有 ID 和其他字段。还有对这个话题不重要的城市
我有这样的工作要求:
SELECT
bookings.id as 'booking id',
bookings.name as 'client name',
events.title as 'event title',
cities.title as 'City',
FROM bookings
JOIN events ON events.id = bookings .event_id
JOIN cities on events.city_id = cities.id
WHERE bookings.status = "new"
and bookings.id not in (SELECT booking_id
FROM comments
WHERE booking_id <> 0
and booking_id is not null
)
我想查看评论表中评论少于 5 条的此类活动的预订。我试图添加这个(到上面提到的查询):
SELECT
<...>
events.id as MY_VARIABLE
<...>
WHERE
<...>
and (SELECT count(id) FROM comments WHERE comments.event_id = MY_VARIABLE and booking_id <> 0 and booking_id is not null) < 10
显然,这不起作用,我不知道我是否应该制作 python 脚本来存储每个事件的评论计数,然后使用它作为标准从我的第一个查询中排除/包含数据
请帮忙,MySQL中有足够简单的解决方案吗?如果需要,我可以提供更多信息或在评论中更清楚地说明这一点
解决方案
我将此添加到 SELECT 字段:
events.id as A,
(SELECT count(comments.event_id)
FROM events LEFT JOIN comments ON events.id = comments.event_id
WHERE events.id = A and booking_id <> 0 and booking_id is not null) as 'Comment count'
它工作得很好。我现在有了我需要的数据,可以按评论数过滤它
推荐阅读
- python - 使用opencv在python脚本中进行双重imshow
- javascript - 过滤带有卡片的 DIV
- c# - Entity Framework Core:使用 NOLOCK 读取和选择记录
- ruby - AWS SAM 包含具有本机依赖项的 gem
- flutter - Flutter,如何制作 Button 以在 Flutter 中打开抽屉
- html - 如何过滤文本然后用不同的文本替换它
- node.js - NPM 命令不起作用,无法卸载它或节点
- java - 审核多个微服务中的日志记录
- typescript - 打字稿只能找到 CI 类
- flask - 使用 Flask 和 WTForms,如何在使用 POST 提交表单时引用服务器变量来修改?