如果其他表指向记录,则从表中选择数据。

25 浏览
0 Comments

如果其他表指向记录,则从表中选择数据。

这个问题已经在这里有了答案:

INNER JOIN、LEFT JOIN、RIGHT JOIN 和FULL JOIN 有什么区别? [重复]

我在我的数据库中有两个表

 ---------               ---------
|    A    |             |    B    |
|---------|             |---------|
| id      |             | id      |
| name    |             | a_id    |
 ---------              | name    |
                         ---------

我想要选择表A中的所有记录,仅当存在指向表A中记录的表B中的一条记录时 (B.a_id = A.id)。

我该怎么做呢? 我想要解释一下它是如何实现的,以便我可以理解它是如何完成的。

admin 更改状态以发布 2023年5月25日
0
0 Comments
SELECT *
FROM a
WHERE id IN (SELECT a_id from b)

:这段文字用了HTML标签,表示在文本中加粗了“123”。

0
0 Comments

使用 INNER JOIN

SELECT DISTINCT A.*
FROM A
    INNER JOIN B ON B.a_id = A.id

由于使用了 INNER JOIN,对于表 A 中的每一行,MySQL 会查找所有符合 JOIN 条件(B.a_id = A.id) 的来自表 B 中的行。

SELECT 子句指示它只返回表 A 中的列 (A.*),但由于联接的存在,表 A 中的一行可以与表 B 中的多行匹配。 DISTINCT 子句确保避免在结果集中多次输出相同的行。

0