问题: 在汽车数据库中,有一个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”,我收到了语法错误。
我只是不确定为什么其他方法不能按预期方式工作。
答案 0 :(得分:1)
您的第一个查询就是方法(使用“ IN” /子查询方法)。
第二次尝试是从“汽车”表中选择没有“ ModelName”列的数据。这样只是行不通。在第二种方法背后并没有真正的主意。
另一种解决方案是将数据以某种方式合并在一起:
SELECT MODEL.ModelName
FROM MODEL
JOIN CAR
ON MODEL.ModelID = CAR.ModelID
WHERE CAR.StickerPrice > 30000;