You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询求助:筛选预订红色船只且容量超200的唯一码头名称

修正你的SQL语句来满足需求

先梳理下你原SQL语句里存在的几个问题:

  • JOIN关联条件语法错误:你写的on (m.mid, r.mid)没有指定关联逻辑,正确的关联方式应该是on m.mid = r.mid,用来绑定码头表和预订表的关联字段
  • 子查询使用=存在风险:如果数据库里有多条红色船只记录,这个子查询会返回多条结果,用=会直接触发报错,应该改用IN来匹配多条结果
  • 缺少码头容量过滤规则:你没有添加capacity > 200的条件来筛选符合容量要求的码头

修正后的SQL语句

SELECT DISTINCT m.name
FROM marina m
JOIN reservation r ON m.mid = r.mid
JOIN boat b ON r.bid = b.bid
WHERE b.color = 'Red'
  AND m.capacity > 200;

语句逻辑解释

  1. 表关联:通过两次JOIN依次关联码头表、预订表和船只表,这样可以直接筛选出和红色船只有关联的预订记录,比子查询的写法更直观易读
  2. 条件过滤:b.color = 'Red'锁定红色船只的预订记录,m.capacity > 200筛选出容量超过200的码头
  3. 去重处理:DISTINCT确保同一个码头名称只会被返回一次

测试数据验证结果

根据你提供的测试数据,最终符合条件的结果只有Porto(mid=33,capacity=300),它既满足容量超过200的要求,同时存在红色船只(bid=1和bid=72)的预订记录。

内容的提问来源于stack exchange,提问作者user13398330

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 15:02:27