如何仅在表A行和表B中的特定行之间存在关系的情况下从表A中进行选择?

问题描述

让我说我有两个MysqL表,表A和表B。每个表都有一个名为id和名称列的主键。我还有第三个表,表C,其中包含表A和表B之间的关系。每行包含两个外键,分别称为a_id和b_id,正如您所期望的,它们对应于表A和B中的ID。

我想做的是随机选择一组10个表A行,但仅选择与表B中特定条目有关系的行。我不知道我要提前寻找哪些条目,我将从他们的名字开始。名称将通过查询参数提供。

我知道我应该从这个开始:

SELECT * FROM `A`
ORDER BY RAND()
LIMIT 10

但是我不知道如何构造where子句。

解决方法

您需要这样的东西:

SELECT *
FROM `A` a
INNER JOIN `C` c ON
    a.ID = c.a_id AND
    c.b_id in (1,2,3,4) -- your entries here

-- order and limit as you wish
ORDER BY RAND() 
LIMIT 10