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

关联子查询使用问题:如何筛选BMW品牌的SUV车型?

问题修正方案

原查询错误原因

你的查询逻辑存在问题:子查询SELECT vehicle_type from Cars WHERE Automaker = 'BMW'会返回BMW品牌下的所有车型类型(这里是SUV和Sedan),当使用=匹配时,要么触发多行结果错误,要么数据库仅取子查询返回的第一行值(SUV),最终导致所有SUV车型被返回,而非仅BMW品牌的SUV。

修正方法

方法1:直接条件筛选(最简洁高效)

不需要子查询,直接通过两个条件的交集筛选目标数据:

SELECT * FROM Cars 
WHERE vehicle_type = 'SUV' 
  AND Automaker = 'BMW';

方法2:使用关联子查询(满足你的需求场景)

如果一定要用关联子查询,需要让子查询与主查询关联,确保只筛选出当前行属于BMW品牌且车型为SUV的记录:

SELECT * FROM Cars c1
WHERE EXISTS (
    SELECT 1 FROM Cars c2
    WHERE c1.id = c2.id
      AND c2.Automaker = 'BMW'
      AND c2.vehicle_type = 'SUV'
);

或者另一种关联子查询写法:

SELECT * FROM Cars c1
WHERE c1.vehicle_type = 'SUV'
  AND (SELECT c2.Automaker FROM Cars c2 WHERE c2.id = c1.id) = 'BMW';

验证结果

执行修正后的查询,会返回以下两条符合要求的记录:

idCarNamevehicle_typeAutomakerPrice
1BMW X6SUVBMW108200
2BMW X6SUVBMW88200

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:55:24