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

标签 mysql sql

考虑以下示例:

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

有 3 个表:Car、Types、CarTypeMappings

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

这是我想要的结果:

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

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

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

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

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

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

最佳答案

您可以一次JOIN多个表:

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

关于mysql - 使用 MySQL 从具有 ID 列表的多个表中选择多行的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23483851/

相关文章:

sql - 启动 MySQL 例程和脚本

java - 三张表,两个外键和一名困惑的程序员

mysql - 在实时机器 (MySQL) 上更新 MyISAM 表

mysql - 每个 freeradius 表在数据库中存储什么样的数据?

java - 我如何使用Java连接Mysql?

MySQL 在每个邮政编码中找到最贵的

php - 您无权访问此服务器上的 check.php

sql - 公式买三送一

mysql - Innodb缓冲池和多重连接

mysql - EXCEL VBA 为多个变量赋值