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

已知Driver表ID为入参,编写多表关联SQL判断车辆居住国是否为美国

你写的SQL存在几处明显问题:

  1. 语法逻辑错误:将查询居住国的子查询直接放在WHERE子句中当作表使用,不符合SQL的语法规则
  2. 条件完全写反:你的需求是匹配居住国为美国的场景才返回1,你写的条件反而把居住国是美国的场景排除了
  3. 字段匹配大小写错误:VehicleCountry表中存储的字段名是Residence Country,你写的全大写的RESIDENCE COUNTRY在大小写敏感的数据库中会匹配不到记录
  4. 存在冗余的表关联:如果没有校验车辆可用性的额外需求,Vehicle表可以不用关联,Driver表拿到vehicleId后可以直接关联VehicleCountry表

下面是符合需求的正确写法:

SELECT 1
FROM Driver ies
INNER JOIN VehicleCountry vc 
  ON ies.vehicleId = vc.vehicleId
WHERE ies.id = :GID
  AND vc.VehicleField = 'Residence Country'
  AND vc.VehicleValue = 'USA'
LIMIT 1;

如果你的业务要求必须校验车辆状态为可用,可以加上Vehicle表的关联:

SELECT 1
FROM Driver ies
INNER JOIN Vehicle v 
  ON ies.vehicleId = v.vehicleId
INNER JOIN VehicleCountry vc 
  ON ies.vehicleId = vc.vehicleId
WHERE ies.id = :GID
  AND v.VehicleAvl = 'Yes'
  AND vc.VehicleField = 'Residence Country'
  AND vc.VehicleValue = 'USA'
LIMIT 1;

以上查询逻辑清晰:传入Driver的ID后,找到对应的车辆,匹配该车辆居住国为美国的记录,匹配到就返回1,没有匹配到就无返回结果,刚好满足你的需求。加LIMIT 1是为了避免极端情况下同一车辆有多条居住国记录时返回多行,如果你能保证VehicleCountry表同一个vehicleId同一个VehicleField只有一条记录可以省略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:15:01