使用MySQL从ID列表中选择多个表中多行的最有效方法

时间:2014-05-06 00:01:47

标签: mysql sql

考虑以下示例:

http://sqlfiddle.com/#!3/b89b8/2

有3个表:Car,Types,CarTypeMappings

我有一个Car ID(3,7)列表和一个CarTypeMapping ID列表(2,6,3,4),我想检索一个包含汽车及其类型的友好名称的表。

这是我想要的结果:

CarName    CarType
-------    --------
VW         Jetta
VW         Golf     
Nissan     Altima
Nissan     Sentra

正如您在我的示例中所看到的,我有多个查询一次获得一行,但我想一次性完成此操作。

如果需要,我可以创建存储过程,但我不想多次轮询数据库。实现这一目标的最有效方法是什么?是否可以使用WHERE id IN(..)语法? 我可能有一百个ID用于一个查询。 感谢。

编辑:为了澄清,我有以下数组(CarIDs,CarTypeMappingIDs)对。对于上面的示例,它看起来像这样:

(3,2)
(3,6)
(7,3)
(7,4)

这个列表可能很长,所以我正在寻找一种有效的方法来查询数据库以获取名称。我的问题是我如何将这些ID用作查询的一部分。

1 个答案:

答案 0 :(得分:1)

您可以同时JOIN多个表:

SELECT 
Car.name,
Types.typeName
FROM
CarTypeMappings
JOIN Car ON CarTypeMappings.CarID = Car.ID
JOIN Types ON CarTypeMappings.TypesID = Types.ID