问题描述
让我说我有两个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