如何仅在 table A 行与 B 中特定行之间存在关系的情况下从 table A select?

How to select from table A only where a relationship between the table A row and a specific row in B exists?

假设我有两个 MySQL tables,table A 和 table B。每个 table 都有一个名为 id 的主键和一个名称列。我还有第三个 table、table C,它包含 table A 和 table B 之间的关系。每行包含两个外键,称为 a_id 和 b_id,如您所料,它对应于 tables A 和 B 中的 ID。

我想要做的是 select 一组随机的 10 table 行,但只有 select 行与 table 中的特定条目有关系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