0

问题:在汽车数据库中,有一个包含列 ModelID、MakeID 和 ModelName 的 Model 表和一个包含 CarID、ModelID、VIN、ModelYear 和 StickerPrice 列的 Car 表。使用子查询和 IN 列出贴纸价格大于 30000 美元的所有型号名称

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

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

但是,我尝试使用“IN”关键字对“型号”表进行子查询,以显示“型号名称”和“标价”,但出现了一些错误。我试过了:

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

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

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

但由于“AS”关键字,我得到一个语法错误。

我只是不确定为什么以另一种方式这样做不会按预期工作。

4

1 回答 1

1

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

在第二次尝试中,您从没有列“ModelName”的“car”表中选择数据。这只是行不通。不要真正理解第二种方法背后的想法。

另一种解决方案是以某种方式将数据连接在一起,如下所示:

SELECT MODEL.ModelName
FROM MODEL
JOIN CAR
  ON MODEL.ModelID = CAR.ModelID
WHERE CAR.StickerPrice > 30000;
于 2019-04-04T19:09:05.820 回答