如果其他表格指向要记录

时间:2016-11-15 15:30:18

标签: mysql sql

我的数据库中有两个表

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

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

我怎样才能做到这一点?我想要一个解释,所以我理解它是如何完成的。

3 个答案:

答案 0 :(得分:1)

使用INNER JOIN

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

由于INNER JOIN,对于表A中的每一行,MySQL会查找B中与JOIN条件匹配的所有行(B.a_id = A.id

SELECT子句指示它只返回表AA.*)中的列,但由于JOINA中的一行可以匹配B中的多行。 DISTINCT子句注意避免在结果集中多次使用相同的输出行。

答案 1 :(得分:0)

SELECT *
FROM a
WHERE id IN (SELECT a_id from b)

答案 2 :(得分:0)

这是一个基本的INNER JOIN

SELECT a.*
FROM a
INNER JOIN b ON a.ID = b.a_ID

内部联接将选择指定表中与连接条件匹配的所有记录(ON运算符)。