使用“ IN”关键字的子查询

时间:2019-04-04 19:02:47

标签: mysql subquery in-subquery

问题: 在汽车数据库中,有一个Model表,其中包含ModelID,MakeID和ModelName列,以及Car表,其中包含CarID,ModelID,VIN,ModelYear和StickerPrice。使用子查询和IN来列出标价大于$ 30000的所有型号名称

我能够使用以下方法解决问题:

SELECT ModelName FROM MODEL 
WHERE ModelID IN (SELECT ModelID FROM CAR WHERE stickerPrice >30000);

但是,我试图使用“ IN”关键字对“ MODEL”表进行子查询,以显示“ model name”和“ sticker price”,但是出现了一些错误。我尝试过:

SELECT  ModelName, stickerPrice FROM car 
WHERE stickerPrice >30000 
AND ModelID IN(SELECT ModelID From Model);

但是我得到了一个错误,因为“ modelname”是“模型”表上的一个字段。 我也尝试过别名:

SELECT  M.ModelName, stickerPrice FROM car 
WHERE stickerPrice >30000 
AND ModelID IN(SELECT ModelID From Model) AS M;

但是由于关键字“ AS”,我收到了语法错误。

我只是不确定为什么其他方法不能按预期方式工作。

1 个答案:

答案 0 :(得分:1)

您的第一个查询就是方法(使用“ IN” /子查询方法)。

第二次尝试是从“汽车”表中选择没有“ ModelName”列的数据。这样只是行不通。在第二种方法背后并没有真正的主意。

另一种解决方案是将数据以某种方式合并在一起:

SELECT MODEL.ModelName
FROM MODEL
JOIN CAR
  ON MODEL.ModelID = CAR.ModelID
WHERE CAR.StickerPrice > 30000;