在这种情况下,我无法弄清楚内部连接


  1. 我有一个名为 A 的表,它有一个主键A_ID
  2. 我有一个名为 B 的第二个表,它有一个主键B_ID和外键A_ID
  3. 我有一个名为 C 的第三个表,它有一个主键C_ID和外键B_ID以及一个名为 name 的行。

对于我的情况,假设表 A 的 ID 为 1-10,B 的 ID 为 10-100,C 的 ID 为 100-1000

现在我想要以下功能:我想要表 C 中具有外键 B_ID 的所有名称 A_ID=3

所以基本上假设表 C 中的一些名称B_ID具有 20,30,40,50,60,表B 中的 B-ID 20 和 30 具有 A-ID 3

所以我想要表 C 中的数据,只有 B_ID 的 20 和 30

我希望我足够清楚,我会提到我写的查询,但我不希望读者再感到困惑。

提前致谢...

你能试试这个吗:

SELECT C.names
FROM C
    INNER JOIN B ON C.B_ID = B.B_ID
    INNER JOIN A ON B.A_ID = A.A_ID
WHERE A.A_ID = 3

我不确定我是否遗漏了某些内容,但是如果您想要的只是基于表中可用信息的表 c 中的数据,则无需连接到其他表,除非您想验证B_ID是否存在table b

Select * from TableC where B_ID in (20,30)

编辑:这是整个连接,它将返回表 C 中的所有行,其中 'B

SELECT C.*
    FROM A
    JOIN B
        ON A.A_ID = B.A_ID
        AND B.B_ID IN (20,30)
    JOIN C
        ON B.B_ID = C.B_ID
    WHERE A.A_ID = 3

相关内容

最新更新